티스토리 뷰
발생일: 2016.04.25
키워드: content hugging, compression resistance priority
문제:
iOS의 뷰 처리를 하면서 헷갈렸던 개념이 Content hugging 과 Compression Resistance 였다.
해결책:
현재 뷰를 기준으로, 뷰의 영역이 늘어나거자 줄어드는 경우에 대한 기준을 설정하는 값이다.
Content Hugging Priority
늘어나는 경우에 대한 우선순위
- 화면이 커지는 경우, 우선순위가 낮은 뷰가 화면에 따라 더 늘어난다.
- 어떤 뷰가 늘어나서 화면을 채울 것인가? (우선순위가 낮은 뷰가 늘어난다)
어떤 뷰의 컨텐트 허깅 프라이어리티를 높인다는 것
- 화면이 커져도 이 뷰는 크기를 유지하겠다
어떤 뷰의 컨텐트 허깅 프라이어리티를 낮춘다는 것
- 화면이 커지면 이 뷰를 늘려 화면에 맞추겠다
Content Compression Resistance Priority
줄어드는 경우에 대한 우선순위
- 화면이 작아지는 경우, 우선순위가 낮은 뷰가 화면에 따라 더 줄어든다.
- 어떤 뷰가 줄어들어서 화면을 맞출 것인가? (우선순위가 낮은 뷰가 줄어든다)
어떤 뷰의 컴프레션 레지스턴스 프라이어리티를 높인다는 것
- 화면이 작아져도 이 뷰는 크기를 유지하겠다
어떤 뷰의 컴프레션 레지스턴스 프라이어리트를 낮춘다는 것
- 화면이 작아지면 이 뷰를 줄여 화면에 맞추겠다
기본적으로 UILabel의 CH 우선순위는 251
UITextField의 CH 우선순위는 250
레이블과 텍스트필드가 동시에 보여졌다면,
- 우선순위가 높인 UILabel은, 화면이 늘어나도 그 크기를 유지하고
- 우선순위가 낮은 UITextFiled는, 화면이 늘어나면 크기를 늘려 화면에 맞춘다
는 이야기이다.
// Compression Resistance (750)
View.height >= 0.0 * NotAnAttribute + IntrinsicHeight
View.width >= 0.0 * NotAnAttribute + IntrinsicWidth
// Content Hugging (250)
View.height <= 0.0 * NotAnAttribute + IntrinsicHeight
View.width <= 0.0 * NotAnAttribute + IntrinsicWidth
참고:
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/AnatomyofaConstraint.html#//apple_ref/doc/uid/TP40010853-CH9-SW21
반응형
댓글
공지사항