[최종 수정일 : 2017.11.20]
제약조건 없는 오토 레이아웃(Auto Layout Without Constraints)
스택 뷰(Stack Views)는 복잡한 제약조건을 사용하지 않고 오토 레이아웃(Auto Layout)의 기능을 손쉽게 활용할 수 있습니다. 단일 스택 뷰(stack view)는 사용자 인터페이스 요소의 행(row) 또는 열(column)을 정의합니다. 스택 뷰(stack view)는 속성(properties)에 따라 이러한 요소들을 정렬합니다.
- 축(axis): (UIStackView 전용) 스택 뷰의 방향, 수직(vertical) 또는 수평(horizontal)을 정의합니다.
- 방향(orientation): (UIStackView 전용) 스택 뷰의 방향, 수직(vertical) 또는 수평(horizontal)을 정의합니다.
- 구분(distribution): 축을 따라 뷰의 레이아웃을 정의합니다.
- 정렬(alignment): 스택 뷰의 축에 수직인 뷰의 레이아웃을 정의합니다.
- 간격(spacing): 인접한(adjacent) 뷰 사이의 공간을 정의합니다.
스택 뷰를 사용하려면, 인터페이스 빌더(Interface Builder)에서 캔버스(canvas)로 수직(vertical) 또는 수평(horizontal) 스택 뷰를 드래그 합니다.
객체가 원래의 콘텐츠 크기를 가지는 경우, 그 크기는 스택 안에서 나타납니다. 원래의 콘텐츠 크기가 없는 경우에, 인터페이스 빌더(Interface Builder)는 기본 크기를 제공합니다. 여러분은 객체 크기를 조정할 수 있고, 인터페이스 빌더(Interface Builder)는 크기를 유지하기 위해 제약 조건을 추가합니다.
레이아웃을 더욱 미세하게 조정(fine-tune)하려면, Attributes inspector를 사용해서 스택 뷰의 속성을 수정할 수 있습니다. 예를 들어, 다음에 오는 예제는 8 포인트 간격과 균등한 채우기를 사용하였습니다.
스택 뷰는 배치된 뷰의 content-hugging과 compression-resistance 우선순위에 대한 레이아웃을 기반으로 합니다. 여러분은 Size inspector를 사용해서 수정할 수 있습니다.
노트
뷰를 정렬하기 위해 제약사항을 직접 추가하여 레이아웃을 추가로 수정할 수 있습니다: 하지만, 가능한한 충돌을 피하길 원합니다: 짐작으로는(As a general rule of thumb), 뷰의 크기가 주어진 크기(dimension)에 대해 원래 컨텐츠 크기로 돌아가는 경우에, 그 크기(dimension)에 대한 제약조건을 안전하게 추가 할 수 있습니다. 제약조건 충돌(conflicting constraints)에 대한 자세한 정보는, 불만족스러운 레이아웃(Unsatisfiable Layouts)을 보세요.
또한, 여러분은 보다 복잡한 레이아웃을 만들기 위해 다른 스택 뷰 안쪽에 스택 뷰를 중첩시킬수 있습니다.
일반적으로, 스택 뷰를 사용하여 최대한 많은 레이아웃을 관리합니다. 스택 뷰만으로 목표 달성할 수 없는 경우에만 제약조건을 생성에 의지합니다.
스택 뷰 사용에 대한 자세한 내용은, UIStackView Class Reference 또는 NSStackView Class Reference를 보세요.
노트
중첩된 스택 뷰를 사용하면 복잡한 사용자 인터페이스가 될수 있지만, 여러분은 제약조건에 대해서 완전히 벗어날 수 없습니다. 최소한, 언제나 가장 바깥쪽 스택 위치(와 크기)의 제약조건이 필요합니다.
'iOS > Autolayout' 카테고리의 다른 글
오토 레이아웃 이해하기(Understanding Auto Layout) (0) | 2018.05.09 |
---|