Group
/ GroupBox
에 대해 알아보도록 합시다.
Group
Group
에서 꼭 외워야 할 것은 VStack
과의 차이점입니다. 간단하게 말하자면
- VStack은 최대 10개의 자식을 가질 수 있습니다. (HStack, LazyVStack, LasyHStack 모두 동일)
-
Group
은 이 문제를 해결해줍니다.
코드로 한번 같이 보도록 합시다.
아래와 같이 VStack
만으로 11
개의 자식을 만들게 되면 컴파일 오류가 생깁니다.
NavigationView {
VStack {
Text("1")
Text("2")
Text("3")
Text("4")
Text("5")
Text("6")
Text("7")
Text("8")
Text("9")
Text("10")
Text("11") //11번째부터는 컴파일 오류가 생긴다.
}
}
그럴 때에는 Group
을 사용해서 해결해 줄 수 있습니다.
NavigationView {
VStack {
Group {
Text("1")
Text("2")
Text("3")
Text("4")
Text("5")
Text("6")
Text("7")
Text("8")
Text("9")
Text("10")
}
Group {
Text("11")
}
}
}
GroupBox
GroupBox
는 content
의 logical
그룹과 연관된 optional
label
이 있는 stylized view
입니다.
아래 코드는 일반적인 사용 방법인데, 정의에 'optional label
이 있는' 이라고 나와있죠?
여기서 label
부분이 optional
이기 때문에 아래 코드와 같이 작성할 수 있습니다.
GroupBox(label: Text("Label"), content: {
Text("content")
})
GroupBox(content: { Text("content")
})
struct ContentView: View {
@State private var name = ""
var body: some View {
VStack {
// 1.
GroupBox(label: Label("심장 박동수", systemImage: "heart.fill").font(.largeTitle)) {
Text("69 BPM").font(.title)
}
// 2.
GroupBox {
Text("이름을 입력하세요").font(.title)
TextField("name", text: $name)
}
Spacer()
}.padding(.horizontal)
}
}
struct SourceLinkView: View {
var body: some View {
GroupBox() {
HStack(spacing: 5) {
Text("참고 사이트")
Spacer()
Link("위키백과", destination: URL(string: "https://ko.wikipedia.org/")!)
Image(systemName: "arrow.up.right.square")
}
.font(.footnote)
}
}
}
읽어주셔서 감사합니다🤟
'SWIFTUI > View layout' 카테고리의 다른 글
SwiftUI : Slider (0) | 2021.02.01 |
---|---|
SwiftUI : Divider 구분선 (0) | 2021.01.31 |
SwiftUI : DatePicker / DateFormatter (0) | 2021.01.25 |
SwiftUI : Stepper (onIncrement / onDecrement) (0) | 2021.01.25 |
SwiftUI : ForEach (0) | 2021.01.24 |