FixedSize
에 대해 알아보도록 합시다.
FixedSize
.fixedSize(horizontal: false, vertical: true) //높이를 동일한 크기로
.fixedSize(horizontal: true, vertical: false) //너비를 동일한 크기로
SwiftUI
에서는 frame()
수정자를 fixedSize()
와 결합하여 동일한 높이 또는 동일한 너비를 원하는지 여부에 관계없이 동일한 크기의 두 개의 뷰를 쉽게 만들 수 있습니다. 비슷한 수정자인 GeometryReader
는 필요하지 않습니다.
크기를 원하는 각 뷰에 최대 높이 또는 너비를 제공합니다. 그러면 사용 가능한 모든 공간을 채우기 위해 자동으로 늘어납니다.
그런 다음 해당 뷰가 필요한 공간만 차지해야 한다고 SwiftUI
에 알리는 fixedSize()
수정자를 컨테이너에 적용합니다.
결과적으로 SwiftUI
는 뷰에 필요한 최소한의 공간을 파악한 다음 전체 공간을 차지할 수 있습니다. 두 뷰는 포함된 내용에 관계없이 항상 크기가 일치합니다.
동일한 높이
동일한 높이로 frame
을 지정해주겠습니다. .fixedSize(horizontal: false, vertical: true)
HStack(spacing: 10) {
Text("나랏말싸미 듕귁에 달아 문자와로 서르 사맛디 아니할쎄")
.padding()
.frame(maxHeight: .infinity)
.background(Color.blue)
Text("이런 전차로 어린 백셩이 니르고져 홇베이셔도")
.padding()
.frame(maxHeight: .infinity)
.background(Color.green)
Text("마참네 제 뜨들 시러펴디 몯핧 노미하니아 내 이랄 윙하야 어엿비너겨 새로 스믈 여듫 짜랄 맹가노니")
.padding()
.frame(maxHeight: .infinity)
.background(Color.yellow)
}
//높이가 동일하게
.fixedSize(horizontal: false, vertical: true)
.frame(maxHeight: 200)
}
동일한 너비
동일한 너비로 frame
을 지정해주겠습니다. .fixedSize(horizontal: true, vertical: false)
VStack {
Button("서근 개발 블로그") {}
.foregroundColor(.black)
.padding()
.frame(maxWidth: .infinity)
.background(Color.yellow)
.clipShape(Capsule())
Button("로그인") {}
.foregroundColor(.black)
.padding()
.frame(maxWidth: .infinity)
.background(Color.green)
.clipShape(Capsule())
}
// 너비가 동일하게
.fixedSize(horizontal: true, vertical: false)
이 fixedSize()
외에도 더 복잡한 방법이 있는데 엄청 복잡합니다.
현재 SwiftUI
에서는 이 fixedSize()
수정자를 사용하는 것이 제일 현명합니다 :)
읽어주셔서 감사합니다🤟
참고하면 좋은 게시글👇🏻
'SWIFTUI > View layout' 카테고리의 다른 글
SwiftUI : Form (Toggle / disabled / If ) (0) | 2021.03.19 |
---|---|
SwiftUI : ZStack ( Spacer / offset / zIndex ) (0) | 2021.03.15 |
SwiftUI : DisclosureGroup (Toggle / Slider) (0) | 2021.03.10 |
SwiftUI : List (ListStyle / onDelete / onMove) (3) | 2021.03.09 |
SwiftUI : TabView / TabViewStyle (0) | 2021.03.07 |