본문 바로가기
iOS/SwiftUI

[SwiftUI] ViewBuilder

by Sky Titan 2022. 1. 11.
728x90
 

핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍 - YES24

SwiftUI는 물론 애플리케이션 개발과 출시를 위한 모든 과정을 담았다!이 책의 목적은 SwiftUI와 Xcode 11, 그리고 스위프트 5 프로그래밍 언어를 사용하여 iOS 13 애플리케이션 제작 기술을 전달하는 데

www.yes24.com

 

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

댓글