Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩
UIKit/AutoLayout

6. Debugging Auto Layout

by Toughie 2023. 3. 26.

Unsatisfiable Layouts

빨간색

시스템이 현재 제약들을 가지고 적절한 해결법을 찾지 못할 때 발생한다.

2개나 그 이상의 필수 제약들의 충돌로 인해 발생한다.(제약들이 동시에 전부 참일 수 없는 경우)

 

런타임에서 시스템이 unsatisfiable layout을 발견하면, 다음과 같은 절차를 밟는다.

1. 충돌하는 제약들이 뭔지 파악한다.

2. 충돌하는 제약들을 하나씩 파괴하고 레이아웃을 체크한다. 적절한 레이아웃을 발견할 때 까지 제약들을 게속 파괴한다.

3. 콘솔에 제약의 충돌과 파괴된 제약들에 관한 로그를 남긴다.

 

이럴 때 많이 발생해요

- 코드로 오토레이아웃 잡을 때 

(translatesAutoresizingMaskIntoConstraints 프로퍼티 false로 바꿔줘야 되는데 까먹었을 경우)

 

- 부모 뷰의 크기가 너무 작은 경우

제약 우선순위를 통해 방지 가능

 

Ambiguous Layouts

2개 이상의 가능성이 존재할 때..

가장 많이 마주치는 에러

 

lldb 명령어를 통해 확인해 볼 수 있음

(hasAmbiguousLayout / exerciseAmbiguityInLayout,

constraintsAffectingLayoutForAxis / constraintsAffectingLayoutForOrientation ...)

 

Logical Errors

단순한 버그, 실수라고 생각하면 됨.

 

Debugging Tricks and Tips

로그를 잘 읽어보자!

⭐️ 어려우면 로그를 긁어서 아래 사이트에 넣어보자⭐️

https://www.wtfautolayout.com/

 

WTF Auto Layout?

Make sense of cryptic Auto Layout error logs.

www.wtfautolayout.com

위와 같은 이미지를 참고하며 하나씩 고쳐보자.

Identifier를 활용해 보자.

식별자를 설정해 두면 로그를 읽기 더욱 쉬워진다.

제약 자체에도 식별자를 설정할 수 있다!

 

오토레이아웃 디버깅은

우선 최대한 처음에 잘 잡고.. 에러가 날 때마다 고쳐보며 경험치를 쌓는 것이 가장 중요해 보인다.

 

[학습 소스]

공식문서, 야곰 오토레이아웃 정복하기 강의

https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/index.html

https://yagom.net/courses/autolayout/

'UIKit > AutoLayout' 카테고리의 다른 글

8. 코드로 오토레이아웃 잡기  (0) 2023.03.26
7. SuperView, Safe Area  (0) 2023.03.26
5. 스택뷰 연습  (0) 2023.03.25
4. Stack Views_ 스택뷰  (0) 2023.03.25
3. Auto Layout - 화면 회전  (0) 2023.03.25