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/
위와 같은 이미지를 참고하며 하나씩 고쳐보자.
Identifier를 활용해 보자.
식별자를 설정해 두면 로그를 읽기 더욱 쉬워진다.
제약 자체에도 식별자를 설정할 수 있다!
오토레이아웃 디버깅은
우선 최대한 처음에 잘 잡고.. 에러가 날 때마다 고쳐보며 경험치를 쌓는 것이 가장 중요해 보인다.
[학습 소스]
공식문서, 야곰 오토레이아웃 정복하기 강의
'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 |