728x90
ViewBuilder
- 하위 뷰는 컨테이너 뷰의 컨텐트가 정적(static)이라는 단점을 가지고 있다.
- 즉, 하위 뷰가 레이아웃에 포함될 때 하위 뷰에 포함될 뷰를 동적으로 지정할 수가 없다.
- ViewBuilder는 여러 개의 child view를 제공하고자 하는 closure에 파라미터 애트리뷰트로 사용된다.
- ViewBuilder 클로저 속성을 사용하면 클로저 형태로 하위 뷰에 포함된 내용을 동적으로 바꿀 수 있는 커스텀 뷰를 만들 수 있다.
import SwiftUI
struct ContentView: View {
var body: some View {
MyCustomStack {
Text("Hello")
Text("World~")
}
}
}
struct MyCustomStack<Content: View>: View {
let content: () -> Content
init(@ViewBuilder content: @escaping () -> Content) {
self.content = content
}
var body: some View {
VStack {
self.content()
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
.previewDevice("iPhone 11")
.previewDisplayName("아이폰 11")
}
}
728x90
'iOS > SwiftUI' 카테고리의 다른 글
[SwiftUI] 배경색 지정하기 (0) | 2022.01.11 |
---|---|
[SwiftUI] Stack (0) | 2022.01.11 |
[SwiftUI] 기본적인 사용자 이벤트 처리 (0) | 2022.01.11 |
[SwiftUI] 뷰 (View) (0) | 2022.01.09 |
[SwiftUI] 여러 디바이스에서 미리보기 (0) | 2022.01.09 |
댓글