티스토리 뷰


preferredMaxLayoutWidth




preferredMaxLayoutWidth 는 multiline label 일 때 영향을 주는 property 로 

Label 의 Width 가 42 이상 늘어나지 못함을 명시적으로 Set 할 수 있다. 

이상 이므로 글자가 더 들어갈 공간이 없으면 width 가 42 보다 적게 들어갈 수 있다. (Ex. width = 40.5)


multiline label 이 아닌경우 아무런 영향을 미치지 못한다.


preferredMaxLayoutWidth 를 설정한 채로 Label 에 Text 를 set 하면 intrinsic content size 가 실제 사이즈처럼 나온다.

sizeThatFits 와 비교했을 때 intrinsicContentSize 가 월등히 좋다. (다만, 여러 번 호출될 때)



Ex. 10000 번 set 결과

sizeThatFits 260.607004ms

intrinsicContentSize 25.253952ms





고유 콘텐츠 크기

고유 콘텐츠 크기 (intrinsic content size)뷰가 표시할 내용을 기반으로 뷰의 크기가 어느 정도될 지에 대한 정보다.
예를 들어, 라벨의 고유 콘텐츠 크기는 표시할 텍스트 크기에 기반을 둔다. 또한 이미지뷰의 고유 콘텐츠 크기는 직접 선택한 이미지 크기이다.

오토 레이아웃은 각 뷰에 고유 콘텐츠 크기 제약조건을 만드는 것으로 이 정보를 고려한다.
이 제약조건은 다른 제약조건과 달리 두 개의 우선순위를 갖는다.


Content hugging priority (콘텐츠 크기 유지 우선순위)

오토 레이아웃에 뷰의 크기를 고유 콘텐츠와 비슷하게 유지할지에 관해 알려준다.
이 값이 1000 이면 뷰가 고유 콘텐츠 크기보다 더 커지는 것을 절대 허용하지 않음을 의미한다.
1000 보다 작다면 오토 레이아웃은 필요한 경우 뷰의 크기를 늘릴 수 있다.


Content compression resistance priority (콘텐츠 축소 방지 우선순위)

오토 레이아웃에 뷰가 고유 콘텐츠보다 줄어들지에 관해 알려준다.
이 값이 1000 이면 뷰가 고유 콘텐츠 크기보다 작아지는 것을 절대 허용하지 않음을 의미한다.
값이 1000보다 작으면 오토 레이아웃은 필요한 경우 뷰를 줄일 수 있다.



Size Inspector 를 보면 세개의 값을 모두 설정할 수 있도록 되어있다.

상대적인 값으로 다른 하나보다 Content hugging priority 가 크면 고유 콘텐츠보다 커지는 것을 허용하지 않는다.
Content compression resistance priority 가 크면 고유 콘텐츠보다 작아지는 것을 허용하지 않는다.

텍스트 필드의 Content hugging priority 의 수직 속성은 이미지뷰의 우선순위 (251) 보다 작은 250이다.
따라서 작은 이미지와 접하면 오토 레이아웃은 그 텍스트 필드를 고유 콘텐츠 크기보다 더 크게 만드는 것을 선택한다.
( ImageView 의 Content Hugging Priority 가 TextField 보다 크기 때문에 ImageView 는 고유 콘텐츠와 크기를 맞춘다. )

[self.imageView setContentHuggingPriority:200
                                  forAxis:UILayoutConstraintAxisVertical];
[self.imageView setContentCompressionResistancePriority:700

                                                forAxis:UILayoutConstraintAxisVertical];










공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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 31
글 보관함