rudin_.log
로그인
rudin_.log
로그인
[iOS] Constraint - Intrinsic Content Size
RudinP
·
2024년 2월 16일
팔로우
0
AutoLayout
iOS
스터디
0
Study
목록 보기
160/227
Intrinsic Content Size
뷰의 본질적인 크기를
Intrinsic Content Size
라고 한다.
Instrinsic Size
라고도 한다.
뷰의 내용이 있는 경우 뷰의 너비, 높이 등 제약이 없을 때 Intrinsic Size를 참고하는데, 이 때 제약이 없는 것이 아닌
ContentSizeLayoutConstraint
를 참고한다.
반대로 뷰가 비어있거나, 크기를 계산할 수 없다면 제약에 문제가 있는 것이다.
보통 크기 제약을 추가하지 않았는데도 에러가 발생하지 않으면 Intrinsic Size가 존재하는 것
Label
크기 제약을 추가하지 않아도 제약 에러는 발생하지 않는다.
Font 크기 기반의 Intrinsic Size를 사용하는 것이다.
보통 개발 시 크기 제약을 추가하지 않는다.
다이내믹 텍스트를 지원하는 경우 글이 잘리거나 하는 문제가 발생할 수 있기 때문.
Button
버튼 또한 크기 제약을 추가하지 않아도 제약 에러는 발생하지 않는다.
텍스트 폰트의 크기 기반의 Intrinsic Size를 사용하는 것이다.
다만, 버튼에는 label과 달리 내부에 약간의 여백이 있는데, 이는 사용자가 터치해야 하기 때문에 어떠한 경우에도 최소한의 공간을 확보하여 이를 감지해야 하기 때문이다.
따라서 Intrinsic Size = text로 계산한 최소한의 크기 + padding
너비 높이 제약을 모두 추가하거나 높이 제약만 추가하여 크기를 고정하는 경우가 많다.
Switch
크기 제약이 없어도 에러 X
너비, 높이 크기 제약을 추가하더라도 프레임의 크기만 바뀌고, 스위치 자체의 크기는 변경되지 않는다.
Slider
크기 제약을 주지 않으면 가로 제약만 문제가 발생한다.
슬라이더는 높이가 고정되어 있으나,
너비는 고정되어있지 않다.
따라서 슬라이더는 너비 제약이 필요하다.
혹은 양쪽 여백을 추가해줘도 된다.
TextField
마찬가지로 intrinsic size가 있다.
border style이 기본값이라면 높이가 고정되고, 약간의 padding이 추가된다.
너비는 입력한 텍스트에 따라 결정된다.
아무것도 입력하지 않은 상황에서는 터치를 위한 최소한의 크기로 존재한다.
보통 너비 제약(주로 양쪽 여백)을 추가한다.
높이 제약을 추가하는 경우도 있긴 한데 흔하지는 않다.
Border Style
맨 왼쪽부터 첫번째, 두번째 스타일을 선택하면 기본 너비 여백이 작아진다.
TextView
Intrinsic size가 없다.
스크롤이 되기 때문에 내용의 크기를 계산할 수 있으나 Intrinsic size로 이를 사용하지 않는다.
만약 스크롤을 사용하지 않는다고 설정하면 Intrinsic size로 사용 가능하다.(Scrolling Enabled 해제)
이 때는 Trailing 제약도 추가해서 밖으로 텍스트가 나가지 않도록 해주어야 한다.
텍스트뷰를 사용하는 목적은 크게 편집과 스크롤이고, 되도록 많은 내용을 보여주는 것이 좋으므로 크기 제약이 아닌, 보통은 남은 공간 전부를 채우는 방식으로 제약을 추가한다.
ImageView
이미지가 설정되어 있지 않은 경우(이미지 뷰가 비어있는 경우) Intrinsic size가 없다.
하지만 이미지가 설정되어 있을 경우 이미지 원본 크기가 Intrinsic size가 된다.
이미지 뷰는 항상 고정된 크기를 사용하는 것이 좋으므로, 보통 크기 제약, 위치 제약을 모두 추가한다.
RudinP
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>
팔로우
이전 포스트
[iOS] Constraint - Item
다음 포스트
[iOS] Constraint - CH, CR
0개의 댓글
댓글 작성