AutoLayout 정리

이재영·2023년 12월 29일
0

기존에 AutoLayout의 단순한 개념과 작동원리만 알고, 스토리보드를 통해
개인 프로젝트에 적용해보니 특정 기종 시뮬레이터에서 View가 망가지는 현상이
발생했다. 그래서 AutoLayout에 대해 완전히 파악하고자, 다시 공부를 진행했다...

기본 속성

왜 필요할까

아이폰만 해도 디스플레이 크기가 다양한 모델들이 존재한다.
그렇기 때문에 디바이스 사이즈에 영향을 받지 않고 동일한
화면을 효율적으로 구성하게 하는것이 필요한데,
이때 필요한 것이 Auto Layout이다.

결국 AutoLayout은 뷰의 x축위치와 크기, y축위치와 크기를
구하는 시스템이라고 볼 수 있다.
AutoLayout은 코드 or 인터페이스 빌더로 구현이 가능하다.


External Change(외부 변경) vs Internal change(내부 변경)

외부 변경 : 슈퍼뷰의 크기나 모양이 변경될 때 발생
(예) 가로모드 / 세로모드 > 기기의 회전
내부 변경 : User Interface View가 변경되었을때


AutoLayout의 필수 조건

오토레이아웃의 조건은 생각보다 간단하다.
xcode 자체에서 스크린의 크기는 알기 때문에
자동으로 레이아웃을 계산해주기 위해선
다음 조건만 알면 된다.

  • 해당 뷰의 위치(x, y)
  • 해당 뷰의 가로, 세로 크기

위 조건들의 경우 Constraint로 알려주면 되는데,

위치의 경우 Anchor를 걸어주면 되고,
크기의 경우 Anchor를 가로, 세로 모두 걸어주게 되면
자동으로 뷰의 크기도 정해주며
(위는 xcode자체에서 스크린의 사이즈를 알기 때문이다)

뷰의 Consraint를 직접 눌러서 정해주어도
되지만, Anchor를 우선적으로 보기도 하고,
기종마다 스크린 사이즈가 다르기 때문에
비율이 달라질 수 있게 된다.

위 조건이 모두 만족되면 AutoLayout이 자리를 잡게 된다!


그 외

iOS 11 부터 적용된 Safe Area은 컨텐츠가
다른 영역(상태바, 탭바, 네비게이션 바 등)을 가리는 것을
방지하는 영역이다.

Constraints (제약사항) 은 뷰 스스로의 또는
뷰와 뷰 사이의 관계를 속성을 통해 정의한 것이다.



자세한 내용 : https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/index.html#//apple_ref/doc/uid/TP40010853-CH7-SW1

profile
기록

0개의 댓글