Auto Layout
공부 @ 활동학습Auto Layout
에서 가장 중요한 것은 반응형, 기기에 따라 다른 사이즈로 나타낼 수 있게 만드는 것입니다.
복수의 Constraint
요구사항이 서로 상충되는 경우에 아래와 같이 붉은 선으로 상충되는 사항들을 알려주며 Conflicting Constraints
상황임을 알려줍니다.
이 경우에 어떤 Constraint
을 우선할 것인지 컴퓨터에게 알려주기 위해 Priority
를 설정할 수 있습니다. Priority
값은 1 ~ 1000을 1 단위로 가질 수 있는데, 1000 (required)
, 750 (high)
, 500 (medium)
, 250 (low)
과 같이 250 단위로 지정된 미리 지정된 값이 있어 이를 이용하는 경우가 많습니다.
source: Apple Developer
기존 예제로 돌아가서 상충되는 두 View
사이의 거리 중 20의 priority
를 1000 (required)으로, 100의 priority
를 750 (high)으로 조정해보겠습니다.
의도한대로 두 View
사이의 거리 20이 우선적으로 적용되는 모습을 볼 수 있습니다.
source: Apple Developer
위의 그림은 Content compression
과 Content hugging
이라는 개념을 소개하고 있습니다.
컨텐츠가 줄어들지 않으려고 버티는 힘을 Compression Resistance (CR)
, 늘어나지 않으려 버티는 힘을 Content Hugging (CH)
라고 합니다. 예시를 위해 아래와 같은 상황을 가져왔습니다.
Stack View
에 네 개의 버튼이 들어가 있습니다. Stack View
의 Distribution
이 Fill
으로 설정되어 있어 Stack View
의 크기를 맞추기 위해 버튼 하나의 크기가 다른 버튼보다 길어져 있는 상황입니다. 첫 번째 버튼이 아니라 네 번째 버튼의 크기를 늘리고 싶다면, 첫 번째부터 세 번째 버튼까지의 CH Priority
를 네 번째 버튼보다 크게 만들면 됩니다.
첫 번째부터 세번째 버튼의 CH Priority
: 500
네 번째 버튼의 CH Priority
: 250
반대로 복수의 요소 사이에서 특정 요소의 크기가 작아지지 않아야 할 때 해당 요소의 Compression Resistance (CR)
를 다른 요소보다 크게 만들어 대응할 수 있습니다.
아이폰의 기본 애플리케이션인 계산기를 가로 모드로 사용하면 공학용 계산기로 전환된다. 이건 가로 화면을 먼저 개발하고 세로 화면이 되면 세로 모드에서 필요한 버튼 이외의 버튼들이 hidden
처리되는 형식으로 개발했을까, 아니면 가로와 세로모드 화면이 따로 개발되어 있는 것일까?
source: ios.gadgethacks.com