[iOS] Constraint - CH, CR
- 1~1000의 우선순위를 가지며, 제약의 우선순위와는 별도의 관계이다.
- Intrinsic Size를 기반하여 배치할때 영향을 준다.
- 크기가 고정되어 있는 경우 사용 X, 크기가 고정되지 않은 뷰가 수평이나 수직으로 나란히 배치되어 있을 때만 작용
- 두 뷰 중 하나만 원래 크기(Intrinsic size)로 표시하고, 나머지 뷰는 크기를 키우거나 줄여 배치하는데 이 때 CH, CR이 사용된다.
Content Hugging Priority(CH)
확장에 대한 저항력(너비를 다 채우지 못할 때)
- 원래 크기보다 더 커지지 않으려는 저항력(확장에 대한 저항력)
- 기본 값이 250이다.
- 만약 두 뷰 모두 CH Priority가 값이 같은 경우 제약 에러가 발생한다.
- 값이 더 낮은 뷰가 Intrinsic Size보다 커진다.
- = 값이 높으면 Intrinsic Size 유지
- 전체 너비를 채우고자 한 뷰를 키울 때 확인
Content Compression Resistance Priority(CR)
축소에 대한 저항력(너비가 부족할 때)
- 원래 크기보다 더 작아지지 않으려는 저항력(축소에 대한 저항력_
- 기본 값이 750이다.
- 만약 두 뷰 모두 CH Priority가 값이 같은 경우 제약 에러가 발생한다.
- 값이 더 낮은 뷰가 Intrinsic Size보다 작아진다.
- = 값이 높으면 Intrinsic Size 유지
- 전체 너비에 맞춰 한 뷰를 줄이고자 할 때 확인
실습
CH
- Hello Label에는 leading, top, trailing을, Hi Label에는 top, trailing 제약을 준 상태.
- 이 상태에서는 둘 모두 CH Priority가 같으므로 제약 에러 발생
- 레이블은 251이 Priority 기본 값인데, 이는 다른 뷰랑 나란히 배치했을 때 레이블이 원래 크기를 유지하도록 하려는 의도 때문.
- 왼쪽의 레이블을 250으로 CH Priority를 바꿀 경우 저항력이 낮아진 Hello 레이블이 커진다.
CR
- 마찬가지로 CR Priority가 같으므로 제약 에러가 발생
- 왼쪽 레이블의 CR Priority를 낮췄으므로, 너비가 축소되었고 오른쪽 레이블이 모두 표시됨.