본문 바로가기

개발/Swift

[Swift / 디버깅] 어떤 레이아웃의 오류인지 확인하기. UILabel:0x132f261c0.firstBaseline == UILayoutGuide:0x60000357f2c0'TitleView(0x132f12de0)'.top + 28

 

<NSLayoutConstraint:0x600002f05220 UILabel:0x132f261c0.firstBaseline == UILayoutGuide:0x60000357f2c0'TitleView(0x132f12de0)'.top + 28   (active)>

 

디버깅 메세지의 풀 메세지 입니다.

이러한 메세지가 발생하는 경우 UILabel:0x132f261c0라벨이 어떤 라벨인지 Debug View Hierachy를 통해 확인하고 조치를 하시면 됩니다.

(0x132f261c0와 같은 문자는 메모리주소이므로 각각 개체마다 모두 다르고, 디버깅 툴로 이 메모리 주소가 어떤 개체에 해당하는 개체인지 정확히 파악 수 있습니다.)

오류가 발생하는 뷰를 띄워놓고, 각 개체들을 누르면 메모리주소를 우측에서 확인 할 수 있습니다.

저는 UILabel:0x132f261c0 라벨을 찾아봤습니다.

 

 

위 처럼 객체를 누르면 아래처럼 메모리 주소를 확인 할수 있습니다.

 

UILabel:0x132f261c0 을 찾았습니다.

 

 

저의 경우 Navigation Item 의 Title Text Font 크기가 30이어서 발생한 문제였으며

위처럼 TitleView(0x13b50cd00)'.top + 28 문구가 발생할 경우 TitleView에 문제가 있다는 것을 확인했습니다.

간단히  NavigationItem의 타이틀라벨의 TitleView에서 발생했고 Title Font크기를 28이하로 줄여주니 디버깅이 가능했습니다.

// ViewController.swift

self.navigationItem.title = "디-데이"
self.navigationController?.navigationBar.titleTextAttributes = [
	.foregroundColor: UIColor.white, 
    .font: UIFont.systemFont(ofSize: 30, weight: .bold)] // Size를 28 이하로 변경

 

 

 

 

반응형