📝
@ViewBuilder とは?
@ViewBuilder は、SwiftUIのために用意されたプロパティラッパーの一種です。
主にカスタムビューを作成する際に、複数の子ビューを簡単に組み合わせるために使用されます。
通常、SwiftUIでは1つのビューのみが関数から返されるべきですが、@ViewBuilder を使用することで、複数のビューを一つのビューにまとめて返すことが可能になります。
例
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Text("Hello, World!")
Text("Welcome to SwiftUI!")
}
}
}
上記のコードでは、VStack に2つの Text ビューが含まれていますが、VStack 自体は一つのビューとして ContentView の body に返されます。ここで暗黙的に使用されているのが @ViewBuilder です。
なぜ@ViewBuilderが必要なのか?
通常、Swiftの関数は単一の戻り値しか持てません。しかし、SwiftUIでは複数のビューを一つのコンテナ(例:VStack、HStack など)にまとめて返す必要があります。@ViewBuilder を使用すると、この制約を解消し、複数のビューを自然に組み合わせて一つのビューとして返すことができます。
Discussion