티스토리 뷰

반응형
SMALL

이번 포스트에서는 Content Hugging 속성과 Content Compression Resistance에 대해 알아보도록 하겠습니다.

iOS Application을 개발하다보면 Auto Layout을 적용할 때가 있는데 여기에 Content Hugging Priority와 Content Compression Resistance Priority가 있습니다.

 

Content Hugging : 최대 크기에 대한 제한

Content Compression Resistance : 최소 크기에 대한 제한

 

즉, Content Hugging은 Intrinsic Content Size를 최대 크기로 하여 제한한다는 것을 의미하고 Content Compression Resistance는 Intrinsic Content Size를 최소 크기로 하여 제한한다는 것을 의미합니다.

 

그럼 여기서 Intrinsic Content Size는 무엇일까요?

Apple Documentation에서 해당 내용을 일부 발췌해보았습니다.

 

쉽게 이야기 하면 view 자체의 크기를 의미합니다. 

각 뷰에는 위와 같이 제약이 걸려 있는데요. 내부의 크기의 최소 크기에 대한 제약이 content compression이고 외부에 대한 최대 크기에 대한 제약이 content hugging입니다. 

 

이 두 가지 제약에 Priority가 존재하는데 보통은 Priority가 동일하게 설정이 되어 있어 (Hugging : 251, Compression : 750) 별다른 차이를 느낄 수 없었을 것입니다.

 

Content Hugging Priority 실습

예를 들어 Label1과 Label2가 있다고 가정해봅시다.

각 Label의 Content Hugging Priority는 251로 동일합니다. 두 Label 중 한 Label의 Content Hugging Priority를 조금 높여보면 우선순위 높은 쪽의 Label 가로 길이가 해당 Label의 Intrinsic Content Size로 설정되고 나머지 여백은 다른 Label의 가로 길이로 채워지게 됩니다.

 

그 이유는 우선순위가 높은 뷰의 Content Hugging이 우선하여 적용되므로 최대 크기가 해당 뷰의 Intrinsic Content Size로 고정이 되어 버리는 것입니다.

 

Content Compression Resistance Priority 실습

이번에는 Content Compression Resistance를 살펴보도록 하겠습니다. 이름에서도 볼 수 있다시피 Compression에 대하여 Resistance를 가지고 있다고 생각하면 됩니다. Storyboard에 Label이나 버튼 하나를 화면 중앙에 배치하고 가로 가운데 Constraint와 Width에 대한 Contraint를 하나 추가해보면 별다른 문제 없이 화면의 중앙에 배치됩니다.

 

여기서 view (Label or Button)의 TEXT를 굉장히 길게 설정해봅니다. (현재 뷰의 가로 길이보다 길면 됨)

그러면 text의 중앙부분이 ...으로 생략되면서 나타나게 됩니다. 그 이유는 현재 뷰의 intrinsic content size보다 현재 width 가 작기 때문에 그렇게 나타나고 있는데, 이 content compression resistance 우선순위를 Width Constraint보다 우선하도록 높여주겠습니다.

해당 view의 content compression resistance Priority와 Width Constraint의 constant를 모두 1000으로 설정해주고 width constraint의 constant를 999로 변경해보면 가로 길이가 늘어나는 것을 볼 수 있습니다.

 

이번 포스트에서는 Content Hugging과 Content Compression Resistance에 대해 알아보았습니다.

 

반응형
LIST
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함