プログラミングと音楽とアニメとiPhoneとiPadとMacとAndroidとLogicとギターとテニスと車スマートフォン用の表示で見るプログラミングと音楽とアニメとiPhoneとiPadとMacとAndroidとLogicとギターとテニスと車アプリ開発系の勉強メモやTipsなどを中心に他いろいろと書いていきます。この広告は、90日以上更新していないブログに表示しています。アプリ開発UIView-LoadNibhttps://github.com/travitu/UIView-LoadNib現在制作中のアプリでレイアウトやデザインが少し異なる複数のUIViewを用意して、ViewController上でそれらのUIViewを切り替えて表示したい所があったので、コードで同じようなUIViewを書くより、xibで作った方がすぐ見分けがつけやすいと思い、簡易的ですが、カテゴリのライブラリを作りました。UIView+LoadNibフォルダごとプロジェクトに追加します。UIView+LoadNib.hUIView+LoadNib.mそしてUIViewを作ります。この時xibも追加します。デモでは、以下のファイル名にしています。MyCustomView.hMyCustomView.mMyCustomView.xibMyCustomViewクラスに必要な実装を行います。実装内容については後で説明します。Classに先ほど作成したMyCustomViewを指定します。デモでは分かり易いようにUIView上にラベルを追加しています。Main.storyboardでUIViewを新しく追加し、位置やサイズなどを適宜合わせます。ClassにMyCustomViewを指定します。以下、ライブラリのコードと実装するコードの解説です。translatesAutoresizingMaskIntoConstraintsはデフォルトではYESになっています。AutoLayoutの制約をコードで書く場合はNOにします。BuilderからこのViewを生成するためのメソッドです。コードからこのViewを生成するためのメソッドです。UIView+LoadNibのメソッドを使用してxibからUIViewを生成します。addSubview:view];}@endあとはビルドすれば下記のようにMyCustomViewが表示できます。今回はxibでUIViewを生成する目的だったので、デモではinitWithCoder:を使いましたが、コードでUIViewを生成する場合はinitWithFrame:を使います。UIView+LoadNib.mにtranslatesAutoresizingMaskIntoConstraintsを書きましたが、このプロパティはデフォルトではYESとなっています。AutoLayoutの制約をコードで書く場合などはNOにする必要があり、詳しくは以下のドキュメントに載っています。https://developer.apple.com/jp/devcenter/ios/library/documentation/AutolayoutPG.pdf以上、ひとまず作りましたが、このカテゴリのメソッドを使うUIView側の実装の仕方や、カテゴリ側でインスタンス変数が持てるようにしたり、エラー処理など配慮が足りない部分を改良していく予定です。読者になる月別アーカイブ参加グループプログラミングはてなブログをはじめよう!travituさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。