티스토리 뷰

[iOS Auto layout simple constraints] Adaptive single view

from apple auto layout guide

아래 사진처럼 상태바가 있으면 상태바기준으로 8만큼 떨어지고 상태바가 없으면 superview 기준으로 20만큼 떨어지는 Adaptive single view를 만들겠습니다. 



1. 아래와 같이 제약조건을 걸어줍니다.

  1. View.Leading = Safe Area.leading + 20

  2. View.Trailing = Safe Area.trailing + 20

  3. View.bottom = Safe Area.bottom + 20

  4. View.top = Safe Area.top + 8 @ 750

  5. 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 입장에서는 무엇을 선택해야 할지 몰라 하나를 삭제하라고 하는 겁니다.


 




반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   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
글 보관함