SWIFTUI/Others

SwiftUI : layoutPriority( ) - 뷰 우선순위

서근 2021. 3. 14. 05:38
반응형

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 내부의 최신 뷰로 크기 제안 프로세스를 시작합니다 .

 

읽어주셔서 감사합니다🤟