layoutPriority
에 대해 알아보도록 합시다.
layoutPriority
SwiftUI
에서 뷰의 위치와 크기를 계산하는 방법과 .layoutPriority()
를 사용하여 해당 프로세스를 변경하는 방법을 알아보도록 하겠습니다. 우선 간단하게 텍스트를 작성해보도록 하겠습니다.
struct ContentView: View {
var body: some View {
Text("서근 개발블로그!!")
}
}
- SwiftUI는 사용 가능한 모든 공간을
ContentView
에 전달합니다 . ContentView
에는TextView
인 자식이 하나만 있습니다.ContentView
는 사용 가능한 공간을TextView
에 제안하고 크기를 계산하도록 요청합니다.TextView
는 콘텐츠의 크기를 측정하여ContentView
다시 전달합니다 .ContentView
는 이제TextView
크기를 감지하고 사용 가능한 공간의 중앙에 배치합니다.
이것이 SwiftUI 레이아웃 시스템이 작동하는 방식입니다. 항상 위의 네 단계를 적용합니다.
HStack
내부에 여러 형제 뷰가있는 텍스트를 만들어 볼께요.
HStack(spacing: 10) {
Text("나랏말싸미 듕귁에 달아 문자와로 서르 사맛디 아니할쎄")
Text("이런 전차로 어린 백셩이 니르고져 홇베이셔도")
Text("마참네 제 뜨들 시러펴디 몯핧 노미하니아 내 이랄 윙하야 어엿비너겨 새로 스믈 여듫 짜랄 맹가노니")
}
.lineLimit(1)
.padding()
SwiftUI
의 모든 View layout
은 기본적으로 우선 순위가 0
입니다. SwiftUI
에서는 .layoutPriority()
수정자를 사용하여 사용자 지정 레이아웃 우선 순위
를 설정할 수 있습니다.
위 텍스트에 .layoutPriority()
수정자를 추가해서 우선순위를 설정해주겠습니다.
HStack(spacing: 10) {
Text("나랏말싸미 듕귁에 달아 문자와로 서르 사맛디 아니할쎄")
.layoutPriority(1)
Text("이런 전차로 어린 백셩이 니르고져 홇베이셔도")
Text("마참네 제 뜨들 시러펴디 몯핧 노미하니아 내 이랄 윙하야 어엿비너겨 새로 스믈 여듫 짜랄 맹가노니")
}
.lineLimit(1)
.padding()
위의 예에서 볼 수 있듯이.layoutPriority()
수정자를 사용 하여 레이아웃 프로세스의 순서를 변경합니다.
SwiftUI
는 뷰 계층 구조에서 우선 순위가 가장 높기 때문에 HStack 내부의 최신 뷰로 크기 제안 프로세스를 시작합니다 .
읽어주셔서 감사합니다🤟
'SWIFTUI > Others' 카테고리의 다른 글
SwiftUI : DarkMode 구현하기 - Environment (2) | 2021.04.14 |
---|---|
SwiftUI : Preview 레이아웃을 미리 보는방법 (2) | 2021.04.05 |
SwiftUI : Redacted ( onAppear / disabled ) 콘텐츠 모자이크 (0) | 2021.03.07 |
SwiftUI : Menu 버튼을 눌렀을 때 메뉴를 표시 (0) | 2021.01.30 |
SwiftUI : Animation #2 (0) | 2021.01.26 |