見出し画像

ツールバーをCocoaPodsへ切り出し

責任範囲を明確にするため、コードの独立性を高めるためにツールバー部分をCocoaPodsで切り出すことにします。ほかのプロジェクトに再利用する訳ではありませんが、ネームスペースを分けるという意味で使っています。

pod lib create CanvasToolbar
rm -Rf CanvasToolbar/.git

これでフォルダを作り、続けて既存のPodfileに下記のように追加しました。

pod “CanvasToolbar”, path: “../CanvasToolbar”

Podに切り出すメリットの一つにExampleプロジェクトで開発テストを行えます。二人以上で開発する場合、コンポーネント単位でテストプロジェクト作れるのはけっこう楽です。

既に書かれたコードをPodで切り分ける場合、外部からアクセスするメソッドにはpublicを追加してください。特にinit。これ忘れてちょっとはまりましたw

またビルドターゲットのOSバージョンは、podspecファイルに書いてあるのでそちらも変更してください。今回のようにAssetsを使っている場合にはそちらも読み込むようにpodspecを書き換えます。

s.resource_bundles = {
    'CanvasToolbar' => ['CanvasToolbar/Assets/Sketch.xcassets']
}

コードの中ではbundleの扱い方も変わります。

let podBundle = Bundle(for: self.classForCoder)
let bundleURL = podBundle.url(forResource: "CanvasToolbar", withExtension: "bundle")!
let bundle = Bundle(url: bundleURL)!

// bundle指定して読み出し
let image = UIImage(named: named, in: bundle, compatibleWith: nil)

ソースコード: https://github.com/tmokita/ColorPenMemo/tree/78f84f71dfa0f0cfd650d0ac346b84fd8e3868f0


Photo by https://flic.kr/p/ayVi26