Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- tableView
- Clean Code
- 리펙터링
- 리펙토링
- collectionview
- Refactoring
- UITextView
- 애니메이션
- Protocol
- Xcode
- uiscrollview
- MVVM
- 스위프트
- rxswift
- UICollectionView
- HIG
- ribs
- 리팩토링
- 클린 코드
- Observable
- ios
- map
- combine
- swiftUI
- clean architecture
- swift documentation
- RxCocoa
- SWIFT
- Human interface guide
- uitableview
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - SwiftUI] VStack, HStack을 사용할 때 주의할 점 (Stack 패딩, Stack 사이즈 고정) 본문
iOS 응용 (swift)
[iOS - SwiftUI] VStack, HStack을 사용할 때 주의할 점 (Stack 패딩, Stack 사이즈 고정)
jake-kim 2024. 12. 5. 01:42VStack, HStack 사용 할 때 주의할 점
- VStack, HStack은 내부 콘텐츠 크기에 의해서, 자기 자신의 크기가 결정되는 컴포넌트
- 대부분 실수하는 것이 VStack, HStack에 패딩을 넣거나 사이즈를 고정하는 경우가 존재
ex) VStack에 width를 120으로 고정하는 경우
struct ContentView: View {
var body: some View {
VStack(alignment: .leading) {
Text("start")
VStack {
Text("1")
Text("2")
Text("3")
Text("4")
Text("5")
}
.frame(width: 120) // <-
.background(Color.green)
Text("end")
}
}
}
- 위 UI를 보면 정상적으로 120으로 고정된 것 같지만, 만약 내부 콘텐츠의 사이즈가 120보다 커지면 충돌이 발생하는데 이때 뷰가 복잡해지면 버그가 많이 생길 수 있으므로 주의할 것
- 만약 120으로 고정시키고 싶다면, frame(maxWidth:)를 사용
struct ContentView: View {
var body: some View {
VStack(alignment: .leading) {
Text("start")
VStack {
Text("1")
Text("2")
Text("3")
Text("4")
Text("5")
Text("1234567891234512345678")
}
.frame(maxWidth: 120)
.background(Color.green)
Text("end")
}
}
}
- 만약 120이상으로 하고 싶은 경우는 내부에 120width인 투명뷰를 넣어서 세팅
struct ContentView: View {
var body: some View {
VStack(alignment: .leading) {
Text("start")
VStack {
Color.clear
.frame(width: 120, height: 0)
Text("1")
Text("2")
Text("3")
Text("4")
Text("5")
}
.background(Color.green)
Text("end")
}
}
}
결론
- VStack, HStack 모두 내부 크기에 의해서 외부 크기가 결정되는 컴포넌트이며, 예외적으로 frame을 고정시키고 싶을땐 frame(maxWidth:)나 frame(maxHeight:) 함수를 사용하고 그게 아니라면 내부 콘텐츠에 투명 뷰를 넣어서 크기를 조절할 것
'iOS 응용 (swift)' 카테고리의 다른 글
[iOS - SwiftUI] 뷰 속성 순서의 중요성 (SwiftUI 뷰 구현 중 놓치는 것) (0) | 2024.12.12 |
---|---|
[iOS - SwiftUI] 터치 이벤트 받는 방법(contentShape) (1) | 2024.12.10 |
[iOS - swift] @retroactive 개념 (Swift6, Xcode16) (0) | 2024.12.02 |
[iOS - swift] UIPasteBoard.general.changeCount (복사했는지 확인 방법) (1) | 2024.11.12 |
[iOS - swift] UITableViewCell에 pressed 효과 주는 방법 (highlighted 효과, pressed 효과) (3) | 2024.10.24 |
Comments