티스토리 뷰
[iOS Auto layout simple constraints] Adaptive single view
1. 아래와 같이 제약조건을 걸어줍니다.
View.Leading = Safe Area.leading + 20
View.Trailing = Safe Area.trailing + 20
View.bottom = Safe Area.bottom + 20
View.top = Safe Area.top + 8 @ 750
View.top >= Superview.top + 20
여기서 중요한 것은 view.top과 관련된 2가지 제약조건입니다.
5번은 superview.top과 view의 top 간격이 최소 20만큼 떨어지게 하는 제약조건 입니다.
4번은 view.top과 safe area.top의 간격이 8만큼 떨어지게 하지만 priority가 750이라서 optional이라고 합니다. 750도 높은 값이지만 5번이 1000이기 때문에 문서에서 optional이라고 한 것 같습니다. 1000은 required라고 합니다.
- 뷰가 세로 일 때
2가지 다 만족합니다. 일단 5번은 view.top이 superview.top으로 부터 최소 20 만큼 간격이 있으면 됩니다. 그 다음 4번을 한 번 보면, safe Area.top으로부터 8만큼 간격있으면 됩니다. safe area는 status bar아래 에 붙어있고, 기본적으로 모든 control bar들은 최소 20만큼의 높이를 가지기 때문에 4번은 view.top이 Superview.top으로부터 28만큼 간격을 갖게 합니다. 따라서 2가지 다 만족하게 됩니다.
- 뷰가 가로 일 때
뷰가 가로 일 때는 status bar가 없어집니다. 그러면 Superview와 safe area의 크기가 같아 집니다. 이럴 때는 대비해서 4번의 priority를 750으로 한겁니다. 만약 2개의 우선순위가 같다면 아래 사진과 같이 에러가 날 겁니다. auto layout 입장에서는 무엇을 선택해야 할지 몰라 하나를 삭제하라고 하는 겁니다.
'iOS' 카테고리의 다른 글
[iOS 오토 레이아웃 simple constraints] Two Different-Width Views (0) | 2018.07.28 |
---|---|
[iOS Auto layout simple constraints] Two Equal-Width Views (0) | 2018.07.27 |
[iOS Autolayout simple constraints] simple single view (0) | 2018.07.26 |
[IOS AUTO LAYOUT] Dynamic Stack View (0) | 2018.07.18 |
[IOS AUTOLAYOUT] Nested Stack Views (0) | 2018.07.14 |