5.1さらうどん

@giginetの技術ブログ。ゲーム開発、iOS開発、その他いろいろ

XIBを読み込んで良い感じにViewを生成できるライブラリ作った

Macアプリを作ってて、XIBからNSViewを生成したいだけだったのになかなか面倒だったので簡単にできる奴を作った。 似たようなものはありそうなのに、探してみたら意外とちゃんと使える奴が少なかった。

github.com

自分で定義したCustomViewクラスとCustomView.xibを作っておけば、以下のようにするだけで簡単にViewが生成できる。 Genericsを使っているのでカスタムビューのクラスで取得できる。

let customView: CustomView = try! CustomView.view(withOwner: self)
customView.label.text = "Hello World"
self.view.addSubView(customView)

UIKitにもCocoaにも対応しているので、UIViewでもNSViewでも同じように使える。ついでにtvOSでも使える。

クラスを作るまでもなく、ただUIViewのXIBを読みたいだけという用途の場合、自分でファイル名も指定できる。

let customView: UIView = try! UIView.view(
    fromNibNamed: "MyCustomView", 
    owner: self, 
    bundle: NSBundle(forClass: self.dynamicType)
)

気合入れて大きなライブラリを作らなくても、こういうスニペットレベルのものの方がむしろ汎用性が高くてよさそう。

知見

本当に小さいライブラリだし、Swiftライブラリ作成の知見は前回書いてしまったので、他に特に書くことはない。

giginet.hateblo.jp

一つ言えることは、最初はNibLoaderというライブラリ名だったんだけど、CocoaPodsに既に同名のライブラリがホストされてて、完成段階になって泣きながら名前を変えるハメになって大変面倒だったので、作り始める前は下調べをするべき。

どうぞご利用ください。