忙しい人向けの Add custom views and modifiers to the Xcode Library - #WWDC20

忙しい人向けシリーズの第17弾。

冒頭

Xcode Library を利用する利点:

・発見性(再利用可能な View などを見つけやすい)
・学習性(どのように利用するか分かりやすい)
・ビジュアル編集(ドラッグ&ドロップなどで追加できたり)

画像1

SwiftUI 用の LibraryContentProviderプロトコルが導入された。views プロパティはビュー定義、modifiers プロパティはモディファイア定義に利用する。

画像2

View の定義

最小の定義としては、ライブラリから追加した時に、自動的に挿入されるコードスニペットのみだが、

画像3

必要に応じてタイトルカテゴリなどの情報を与えることもできる。

画像4

試しに SmoothieRowView に対して追加してみる。ここでは LibraryContent という名前にしているが、実際には任意の名前が使える

画像5

ライブラリを表示(Cmd + Shift + L)すると既に追加されている。Xcode は自動的に LibraryContentProvider を見つけ出すため。

画像6

ドラッグ&ドロップなどで追加すると、コードスニペットが挿入される。

画像8

複数定義した場合も title や category を指定して探しやすくできる。

画像8

Modifier の定義

Image 用に定義したモディファイアについて見ていく。

画像9

基本的には View と同じだが、引数 base で「どの型に対して適用するか」を指定する点が異なる。

画像10

定義が終わったら、ライブラリの Modifiersタブに表示されるようになる。

画像11

このデモで見たようにビルド不要。これは Xcode がソースを自動的にスキャンして見つけ出すため。これはプロジェクトが実行できない状態でも機能するという利点がある。なお、LibraryContentProvider は実行時には不要なので配布バイナリからは除外される。

なお、ワークスペース内のすべてのソースをスキャンするため、Swift Package などの依存ライブラリで定義されたものも自動で見つけ出す

まとめ

LibraryContentProvider プロトコルに準拠した型を作成し、LibraryItem を返すコードを定義することで、Xcode ライブラリを拡張できる。

関連記事

忙しい人向けの Visually edit SwiftUI views

関連PR

免責

・本記事は公開情報のみに基づいて作成されています。
・要約(意訳)のみなので、詳細はセッション動画をご確認ください。

役に立った記事などありましたらサポート頂けると嬉しいです。