티스토리 뷰

발생일: 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


참고:

반응형
댓글
공지사항