ライブラリ利用時によく使う、ブリッジヘッダーの作り方【Swift低空飛行ガイド】

2015年6月4日

f_f_business_31_s128_f_business_31_1bgSwiftを使っていて、結構な頻度でお世話になるのがブリッジヘッダーファイルです。Object-Cで書かれている便利なライブラリを使えるようにしてくれるお助け役です。CocoaPodでライブラリを取り込むと、だいたいこの作業が必要になります。

以前は以下のようなダイアログが表示されて自動的に設定してくれたんですが、Xcodeのバージョンアップのせいなのか環境が変なのかこのダイアログが表示されなくなったので、自分で作れるように手順を用意することにしました。

今回はSVProgressHUDという作業中のインジケーターを表示するライブラリを組み込む過程と合わせて、手順を説明していきます。

学べること

  • ブリッジヘッダーの作成方法
  • SVProgressHUDの導入方法

始めましょう!

プロジェクトの新規作成

まずはプロジェクトを新規作成します。名前は「IndicatorSample」としておきましょう。テンプレートは「Single View Application」を選択してください。Core Dataのチェックも不要です。手順の詳細は以下をご参照ください。

「基礎手順:プロジェクトの新規作成」

 

オブジェクトの配置

indicatorsample01プロジェクトを作成したら、次はストーリーボード上にボタンを2つ作成します。使用するオブジェクトは「Button」のみです。右下のオブジェクト一覧から選んでストーリーボード上にドラッグして配置しましょう。配置するときはスクリーン上の画面左上あたりが良いです。あんまり右や下に配置してしまうと実行したときに画面の外側にはみ出して表示されなくなることがあります。

ボタンはついでに表示される文字を修正しておきます。1つを「ON」、もう1つは「OFF」にしてください。

 

ボタンとプログラムコードの接続

ボタンが押されたときの動作をプログラムで制御できるように、今作った2つのボタンをアクション接続します。場所はどこでも良いですが、困ったらviewDidLoad(アプリ起動時に必ず実行されるプログラムを書くところ)の上あたりにでも作ってみてください。ボタンの名称は、ONのボタンを「pressOn」、OFFの方は「pressOff」としておきます。接続方法の詳細は下記をご参照ください。

「基礎手順:アクション接続」

 

ライブラリの導入

post178-2cocoapodとか使えばいいんでしょうけど、今回はダウンロードしてプロジェクトに追加します。以下のサイトで圧縮されたファイルをゲットして(右下のDownload ZIPと書かれたボタンを押します)、解凍した中に入っている「SVProgressHUD」ディレクトリをプロジェクトにドラッグして放り込みます。

 

post-178_01コピーしますか?という項目があるので忘れずにチェックしてください。あと「Create groups」をチェックしてください。これでプロジェクト内に「SVProgressHUD」の黄色いフォルダができたら成功です。もし青いフォルダになってしまったら一度フォルダを削除して「Create groups」が選択されているか確認してみてください。

 

SVProgressHUDのダウンロード

 

 

ブリッジヘッダーファイルの作成

post-178-4次に、一番大事な作業になるブリッジヘッダーファイルの作成を行います。メニューの「File」-「New」-「File」を選択して、「Header Files」を選んでヘッダーファイルを追加します。

 

 

 

post-178_02

ファイル名を付ける画面が出たら、ここは注意して作業しましょう。まずファイル名は「IndicatorSample-Bridging-Header.h」にしておきます。以下のリンクではこういう付け方にしてねって書いてあります(実は何でもいいみたいです)。

Swift and Objective-C in the Same Project

名前を付けたら下側のグループを選択する項目で、一番上の青いアイコンを選択してください。あとはCreateボタンを押すだけです。

 

post-178_03ここでファイルが正しくできているか確認してみましょう。Finderでプロジェクトの中を覗いてみると、プロジェクトファイル”IndicatorSample.xcodeproj”、ヘッダーファイル”IndicatorSample-Bridging-Header.h”、SVProgressHUDのフォルダアイコンが同じ階層にいればオッケーです。

 

これでブリッジヘッダーファイルが作成されました。最後にファイルの中に以下の1行を追加します。元々書かれている内容は消してしまって問題ないです。

 

Xcode側の設定

ファイルを作っただけでは認識してもらえないので、1箇所だけ手動で設定する必要があります。左側にあるプロジェクトファイル一覧の一番上をクリックしてプロジェクトの設定画面を表示します。Build Settingを選択して、その設定画面の下の方にあるSwift Compiler – Code Generationの項目で、Object-C Bridging Headerに「IndicatorSample-Bridging-Header.h」を設定します。

post-178-6

 

ここまで来たら一旦実行してみましょう。エラーになってしまった場合は、ブリッジヘッダーファイルの作成手順とXcodeの設定をもう一度確認してください。また、ここでご紹介している方法だとヘッダーファイルの作成場所がプロジェクトファイルと同じディレクトリに作成する必要がありますので、あやしいなと思ったら場所を確認してみましょう。ヘッダーファイルを作り直すために削除する場合はファイルを選択してメニューの「Edit」-「Delete」を選んだ後、出てくるダイアログの「Move to Trash」をクリックするとキレイに消せます。

post-178-7

 

ちょっとだけコーディング

最後に、少しだけプログラムを書きます。さっき作ったボタンのアクションに1行づつ追加して、インジケーターの表示と停止ができるようにします。

 

これで完成です

post-178-8これで実行すれば、ONボタンでインジケーターが表示され、OFFボタンで消えるようになります。ここまで動いたら大丈夫、うまくブリッジヘッダーが機能しています。

サンプルプロジェクトのダウンロードはこちらです。

 

 

 

 

最後に

ちょっと面倒ですが、慣れるとすぐにできるようになりました。これでいろんなライブラリを遠慮なく使えるようになったので、ガシガシ取り入れてたくさん失敗してみたいと思います。

余談ですが、処理が終わるまでは何も触って欲しくない!という場合はpressOnのアクションに追加したsetDefaultMaskTypeのパラメータを「SVProgressHUDMaskType.None」から 「SVProgressHUDMaskType.Black」等に変更すると操作を受け付けなくなりますよ。