[iOS] Swift 공부 - 21
▶ 오토레이아웃을 구현하는 4가지 방법의 장단점
Storyboard | - 직관적이고 사용하기 쉽다.<br>- 뷰의 배치를 시각적으로 확인하며 제약조건을 설정할 수 있다. | - 복잡한 레이아웃을 구성하는 데 한계가 있다.<br>- 여러 사람이 함께 작업할 때 충돌이 발생하기 쉽다. |
코드 | - 제약조건을 세밀하게 조절할 수 있다.<br>- 동적인 레이아웃을 구성할 수 있다.<br>- 버전 관리가 쉽다. | - 코드가 복잡해질 수 있다.<br>- 레이아웃의 변경 사항을 확인하려면 빌드가 필요하다. |
라이브러리(SnapKit 등) | - 코드가 간결하고 이해하기 쉽다.<br>- 복잡한 레이아웃을 쉽게 구성할 수 있다. | - 외부 라이브러리에 의존하게 된다.<br>- 라이브러리의 업데이트나 호환성 문제가 발생할 수 있다. |
SwiftUI | - 선언적 구문을 사용하여 코드가 간결하고 이해하기 쉽다.<br>- 자동으로 다양한 화면 크기와 장치에 맞게 레이아웃을 조절한다. | - iOS 13 이상에서만 사용할 수 있다.<br>- 아직까지는 UIKit에 비해 제공하는 기능이 제한적이다. |
▶ 오토레이아웃에 대한 가이드라인
Auto Layout Guide: Understanding Auto Layout
developer.apple.com
▶ 스택 뷰(Stack View)
- 레이아웃을 잡을 때는 무조건 Stack View 사용
- Stack View로 해결할 수 없을 때만 직접 Constraint를 설정
- UI를 Stack View 안에 추가하고, Distribution, Alignment, Spacing 설정만 하면 개발자가 직접 설정해줘야할 constraint가 많이 줄어듬
- 주어진 설정값에 맞게 Stack View가 자동으로 constraint 조정
- Stack View는 UI 요소를 가로나 세로로 묶어주는 역할
- 세로 방향으로 묶어주는 것이 Vertical Stack View
- 가로 방향으로 묶어주는 것이 Horizontal Stack View
▶ Constraint 설정 툴 : Align, Pin, Resolve, Stack
▶ 고유 콘텐츠 사이즈(Intrinsic Content Size)
고유 콘텐츠 사이즈(Intrinsic Content Size)는 UI 요소에 포함된 콘텐츠의 크기를 의미한다. UIView, UIStackView, UITextView와 같은 UI 요소는 콘텐츠가 정해져 있지 않은 빈 박스 형태이기 때문에 크기를 반드시 지정해야 한다. 반면에 UILabel, UIButton, UISwitch, UISegmentedControl 등 대부분의 UI 요소는 안에 텍스트, 아이콘 등의 '콘텐츠'가 포함되어 있다. 이러한 콘텐츠의 크기를 '고유 콘텐츠 사이즈'라고 한다. 이렇게 고유 콘텐츠가 포함된 UI 요소들은 콘텐츠에 맞춰서 자동으로 제약 조건이 만들어진다. 안에 있는 고유 콘텐츠(폰트 크기, 텍스트의 양, 아이콘, 이미지 등)의 크기에 맞게 제약 조건이 자동으로 설정된다. UITextField의 경우 Placeholder 텍스트가 콘텐츠가 된다. 오토레이아웃 엔진은 고유 콘텐츠 사이즈 우선순위를 250 또는 750으로 자동 설정한다. 우리가 설정하는 제약 조건의 우선순위 값은 기본적으로 1000으로 설정되어 있어, 추가로 설정하면 사용자가 지정한 제약 조건으로 지정된다.
▶ 글자 크기, 길이로 인해 ...으로 보이는 것을 Autoshrink로 조절할 수 있다.