Swiftでいこう!- ちょっとTips。 3 - @ViewBuilder
@ViewBuilderを調べてみます。まず公式ドキュメント。
詳しく説明されているサイトです。
SwiftUIのVStackとHStackはクロージャーの中にViewコンポーネントを宣言的に実装できる。独自のビューコンテナを作ることができます。
その仕組みのキーとなるのが@ViewBuilderということです。
イニシャライザで@ViewBuilderのキーワードを付けて宣言することで使えるようになるようです。
init(@ViewBuilder content: @escaping () -> Content) {
self.content = content
}
init (items:[Item],aspectRatio:CGFloat,@ViewBuilder content:@escaping(Item)->ItemView){
self.items = items
self.aspectRatio = aspectRatio
self.content = content
}
と使われています。
@ViewBuilder content : ・・・
と宣言。
ViewBuilderでは、複数のViewを処理するために、その数分の引数を持つ buildBlock が公式ドキュメントでも定義されています。
static func buildBlock() -> EmptyView
static func buildBlock<Content>(Content) -> Content
static func buildBlock<C0, C1>(C0, C1) -> TupleView<(C0, C1)>
・
・
・
SwiftUIの仕組みとして目には見えませんが使われています。
var body: some View {
VStack {
ViewBuilder.buildBlock( Text("Hello"),Text("Hello"))
}
}
ViewBuilder.buildBlock()
が省略されて、
var body: some View {
VStack {
Text("Hello")
Text("Hello"))
}
}
となります。
独自ビューの作り方を解説されています。
この記事が気に入ったらサポートをしてみませんか?