📝

@ViewBuilder とは?

2024/08/21に公開

@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