setContentHuggingPriority와 setContentCompressionResistancePriority는 Auto Layout에서 뷰의 크기 우선순위를 제어하는 속성입니다. 두 속성은 UI 요소가 확장되거나 축소될 때 그에 맞게 동작을 결정합니다.
1. setContentHuggingPriority
뷰가 더 커지려고 할 때 저항하는 우선순위입니다.
뷰가 자신의 콘텐츠 크기를 유지하려고 할 때 얼마나 저항할지 설정합니다.
- 높은 우선순위를 주면 뷰가 더 커지는 것을 방지합니다.
- 낮은 우선순위의 뷰는 확장될 가능성이 높아집니다.
imageView.setContentHuggingPriority(.required, for: .horizontal)
- imageView는 수평 방향(.horizontal)에서 최대한 자신의 콘텐츠 크기를 유지하려고 합니다.
- 다른 뷰들이 확장될 때 imageView는 확장되지 않으려 합니다.
2. setContentCompressionResistancePriority
뷰가 더 작아지려고 할 때 저항하는 우선순위입니다.
뷰가 자신의 콘텐츠가 잘리지 않도록 유지하려고 할 때 얼마나 저항할지 설정합니다.
- 높은 우선순위를 주면 뷰가 축소되는 것을 방지합니다.
- 낮은 우선순위의 뷰는 더 쉽게 축소됩니다.
imageView.setContentCompressionResistancePriority(.required, for: .horizontal)
- imageView는 수평 방향(.horizontal)에서 자신의 콘텐츠가 잘리는 것을 막기 위해 강력하게 저항합니다.
요약
- setContentHuggingPriority: 뷰가 확장되는 것을 방지합니다.
- setContentCompressionResistancePriority: 뷰가 축소되는 것을 방지합니다.
두 속성을 조절하면 UILabel이나 UIImageView 같은 뷰들이 Auto Layout 제약 조건 하에서 의도한 크기와 배치를 유지할 수 있습니다.
UILayoutPriority
UILayoutPriority는 뷰의 Auto Layout 동작을 조절하기 위한 우선순위 값입니다.
우선순위는 0부터 1000까지의 범위를 가지며, 숫자가 클수록 더 높은 우선순위를 의미합니다.
기본적으로 제공되는 값들:
- .required (1000) :
- 가장 높은 우선 순위, 뷰가 확장되거나 축되지 않도록 강력하게 저항합니다.
- 주로, 특정 뷰의 크기를 절대적으로 유지해야 할 때 사용합니다.
- .defaultHigh (750):
- 기본적으로 높은 우선순위입니다.
- 뷰는 자신의 콘텐츠 크기를 유지하려고 하지만, 다른 뷰의 요구에 따라 조정됩니다.
- .defaultLow (250):
- 기본적으로 낮은 우선순위입니다.
- 뷰는 콘텐츠 크기를 유지하려는 우선순위가 낮기 때문에 쉽게 확장될 수 있습니다.
- 스택뷰와 같은 레이아웃에서 주로 남은 공간을 채우는 역할을 할 때 사용됩니다.
- .fittingSizeLevel (50):
- 가장 낮은 우선순위입니다.
- 주료 뷰의 크기를 최소화하는 상황에서 사용됩니다.
- 뷰의 크기를 최소로 유지하려는 상황에 유용합니다.
우선순위 숫자를 커스텀 설정하기
숫자 값으로도 커스텀 우선순위를 설정할 수 있습니다.
UILayoutPriority는 rawValue를 통해 숫자로 정의됩니다.
label.setContentHuggingPriority(UILayoutPriority(500), for: .horizontal)
'UIKIT' 카테고리의 다른 글
델리게이트 패턴으로 사진 선택하기 (0) | 2024.12.20 |
---|---|
UIScreen과 UIScene (0) | 2024.12.19 |
UICollectionViewCompositionalLayout - 섹션 헤더 (0) | 2024.12.11 |
UICollectionViewCompositionalLayout - 간단 사용 (0) | 2024.12.11 |
UIImageView를 customImageView 생성 (2) | 2024.12.04 |