Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IBDesignable を活用する

Avatar for iganin iganin
January 22, 2019

IBDesignable を活用する

2019/01/22 あるあるLT 登壇資料

Avatar for iganin

iganin

January 22, 2019
Tweet

More Decks by iganin

Other Decks in Technology

Transcript

  1. Self Introduction 伊賀裕展(いが ひろのぶ) iOS Engineer ( + Android, Serverside Kotlin,

    Flutterを少し) Twitter: @iganin_dev GitHub: https://github.com/HironobuIga Qiita: https://qiita.com/iganin
  2. 最近開発していて 左の画面UI • 有限要素 ◦ そのほかの動植物 -> 上限要素数5とします • 全体をスクロールさせたい

    このような場合に従来TableViewで作成していた画面を ScrollView + StackView で作成することが増えてきました
  3. IBDesignableを使用する IBDesignable • Interface Builder上でIBDesignableで定義したViewを表示できる • 上記対象のViewのクラス定義に @IBDesignableを付与する IBInspectable •

    Interface Builder上でIBInspectableとしたプロパティを変更できる ◦ UIViewのBackgroundColorなどのイメージ • 対象のプロパティの @IBInspectableを付与する
  4. 具体的な実装 1. 分離したクラス定義に @IBDesignableを付与 (※minimum実装ならここまで) 2. Storyboard上から修正を加えたいプロパティを IBInspectableを使用して定義 a. set,

    get 経由でborderColorや cornerRadiusも設定可能 b. didSet内でViewの更新処理を入れたり 3. 初期化のタイミングで実行している処理を prepareForInterfaceBuilderに記述 a. viewの角丸、 borderなど b. awakeFromNib等はIB上では実行されな いため
  5. Embedded Framework化 インターネット上にいくつかの記事がありますが、概要は以下です。 1. File > New > Target >

    Cocoa Touch Frameworkを追加 2. 使用元のEmbedded Framework, Linked Frameworks and Librariesに追加 ◦ おそらくですが、1の段階で自動的になっています 3. 分離したいクラスファイルを該当のフォルダへ移動 4. 分離したクラスのターゲットを変更 5. 該当クラスのファイル内のアクセス修飾子を変更 ◦ internal -> public or openに。 ◦ internal=同一モジュール内のみで参照可能 ◦ public=モジュール外からも参照可能。継承は不可。 ◦ open=モジュール外から参照可能。継承も可能。