JosephCha의 개발일지

Content Hugging priority & Content Compression Resistance priority 본문

iOS

Content Hugging priority & Content Compression Resistance priority

JosephCha 2021. 11. 29. 23:31
반응형

Content Hugging은 늘어남에 대한 저항, Content Compression은 줄어듬에 대한 저항

Content Hugging priority

1~3번 모두 해당 시 필요한 우선도

 1. 컴포넌트(ex. UILabel)들의 Width 제약과 Height 제약을 선언하지 않은 상태

 2. 컴포넌트들 사이에 제약을 설정한 상태

 3. 컴포넌트들에 대해, 프레임 공간이 다 채워지지 않은 상태

* 1~3번 모두 해당된다면 적어도 하나의 컴포넌트의 컨텐츠 고유 사이즈가 더 늘어나야 될 상황이다. 우선도가 낮은 컴포넌트의 사이즈가 콘텐츠 고유 사이즈보다 늘어나고, 우선도가 높은 컴포넌트는 콘텐츠 고유 사이즈보다 사이즈가 커지지 않도록 제한한다.

예시)

그림 1. 두 컴포넌트에 width와 height 제약을 설정하지 않고, trailing과 leading에 20씩 제약을 두었다. 그 결과, 빨간색으로 에러가 표시된다.(프레임 공간이 남아서..)
그림 2. A 컴포넌트의 Content Hugging 우선도를 높였더니, B 컴포넌트의 사이즈가 콘텐츠 고유 사이즈보다 늘어난 것이 보인다. 그리고 에러는 사라졌다.

Content Compression Resistance priority

1~3번 모두 해당 시 필요한 우선도

 1. 컴포넌트(ex. UILabel)들의 Width 제약과 Height 제약을 선언하지 않은 상태

 2. 컴포넌트들 사이에 제약을 설정한 상태

 3. 컴포넌트들에 대해, 프레임 공간이 부족한 상태.

* 1~3번 모두 해당된다면, 적어도 하나의 컴포넌트의 컨텐츠 고유 사이즈가 더 줄어들어야 할 상황이다. 우선도가 낮은 컴포넌트의 사이즈가 콘테츠 고유 사이즈보다 줄어들고, 우선도가 높은 컴포넌트는 콘텐츠 고유 사이즈보다 사이즈가 작아지지 않도록 제한한다.

예시)

그림 2의 상태에서 B에 긴 텍스트를 입력했더니, 빨간색으로 에러가 다시 생겼다! (이번엔 프레임 공간이 부족해서..)
A 컴포넌트의 Content Compression Resistance priority의 우선도를 높였더니, B 컴포넌트의 사이즈가 콘텐츠 고유 사이즈보다 줄어든 것을 볼 수 있다.(자세히보면 보임) 만약 B의 우선도를 올렸다면, A의 사이즈가 콘텐츠 고유 사이즈보다 줄어든 것이다.

'iOS' 카테고리의 다른 글

네트워크 Endpoint  (0) 2023.08.09
iOS 동작과정  (0) 2023.08.09
UIKit 기본개념  (0) 2023.08.09
객체지향 프로그래밍  (0) 2023.02.08
MVC 패턴  (0) 2021.11.22
Comments