-
Autolayout (2) - CHCR PriorityiOS 2021. 10. 27. 09:20
Autolayout이란
Auto Layout dynamically calculates the size and position of all the views in your view hierarchy, based on constraints placed on those views.
즉, Autolayout은 View의 크기와 위치를 제약조건(constraints)들을 사용하여 동적으로(dynamic) 결정합니다.
우리는 Autolayout을 사용해서 다양한 화면 크기에 대응할 수 있습니다.
Intrinsic Content Size
The natural size for the receiving view, considering only properties of the view itself.
아래 예시를 통해서 살펴보겠습니다⬇️
1. View를 배치하는 경우
뷰를 배치하기 위해서 leading, top 두개의 속성을 설정해주었습니다.
trailing과 bottom이 설정되어있지 않기 때문에 height와 width에 대한 constraint가 필요하다는 오류가 뜹니다.
2. Label을 배치하는 경우
위에 뷰를 배치한 것과 같이 label의 leading, top 두개의 속성만을 설정해주었습니다.
그러나 이때는 오류가 발생하지 않습니다.
이는 Label이 Intrinsic Content Size을 가지고 있기 때문입니다‼️
Label은 가지고 있는 콘텐츠에 따라 본질적인 크기를 가집니다.
정확히는 UILabel::invalidateIntrinsicContentSize() 메소드를 사용하여 콘텐츠의 크기를 계산하여
UILabel.text에 따라 Intrinsic Content를 업데이트합니다.
따라서, 높이와 넓이를 기본적으로 가지고 있기에 오류가 발생하지 않는 것입니다.
Intrinsic Content Height Intrinsic Content Width UIView X X UISlider O X UILabel, UIButton, UITextField O O
Hugging & Resistance Priority
CHCR priority
lower hugging priority ➡️ Stretch to fill the available space
lower resistance priority ➡️ Compress to fill the available spaceHugging과 Resistance의 우선순위가 높다면, 해당 뷰는 Intrinsic size를 유지할 수 있다.
Hugging 우선순위가 낮다면,
"여기공간 남는다 누가 늘어나서 공간 좀 채워줘😈"라는 요구에 해당 뷰는 늘어나게 된다.
Resistance 우선순위가 낮다면,
"여기공간 부족하다 누가 줄어들어서 공간 좀 비워줘😈"라는 요구에 해당 뷰는 줄어들게 된다.
Reference
'iOS' 카테고리의 다른 글
Carthage 설치방법 (Xcode13) (0) 2021.11.04 Autolayout (1) - Constraints (0) 2021.10.23 Delegate Pattern (0) 2021.10.11