Home iOS AutoLayout 오류 메시지 팁
Post
Cancel

iOS AutoLayout 오류 메시지 팁

AutoLayout 오류 메시지 팁

AutoLayout 오류 메시지가 떴을 때

스크린샷 2023-03-14 오후 9 38 06

iOS 개발을 할 때 스토리보드 없이 코드로 하다보면 해당 메시지를 마주할 날이 한번쯤은 생길 것이다

해당 메시지가 뜨면 AutoLayout 설정 문제가 발생한 것인데 해당 문제가 발생하게 되면 매우 짜증나는 상황이 된다

하나하나 일일히 찾아보며 수정해야 되고 오류 메시지를 보기 또한 매우 힘들기 때문인데

하지만 WTF 해당 사이트를 사용하면 오류 메시지를 쉽게 볼 수 있기에 비교적 쉽게 AutoLayout 문제를 해결할 수 있다

참고로 여기서 WTF는 Why The Failure에 약자이다

예를 들어

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[LayoutConstraints] Unable to simultaneously satisfy constraints.
	Probably at least one of the constraints in the following list is one you don't want. 
	Try this: 
		(1) look at each constraint and try to figure out which you don't expect; 
		(2) find the code that added the unwanted constraint or constraints and fix it. 
(
    "<NSLayoutConstraint:0x600001849310 'UISV-canvas-connection' UIStackView:0x14d72dd00.top == UILabel:0x14d78e1a0.top   (active)>",
    "<NSLayoutConstraint:0x600001849360 'UISV-canvas-connection' V:[UILabel:0x14d78ead0]-(0)-|   (active, names: '|':UIStackView:0x14d72dd00 )>",
    "<NSLayoutConstraint:0x6000018493b0 'UISV-spacing' V:[UILabel:0x14d78e1a0]-(5)-[UILabel:0x14d78ead0]   (active)>",
    "<NSLayoutConstraint:0x600001849220 'UIView-Encapsulated-Layout-Height' UIStackView:0x14d72dd00.height == 0   (active)>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x6000018493b0 'UISV-spacing' V:[UILabel:0x14d78e1a0]-(5)-[UILabel:0x14d78ead0]   (active)>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.

해당 메시지가 발생하여 해당 내용을 WTF에 붙여넣는다면

스크린샷 2023-03-14 오후 9 52 25

이런식으로 바꿔서 쉽게 알아볼 수 있다

This post is licensed under CC BY 4.0 by the author.