-
[Error] navigationbar subview 레이아웃 에러개발/Swift 2024. 8. 20. 12:09
A multiplier of 0 or a nil second item together with a location for the first attribute creates an illegal constraint of a location equal to a constant. Location attributes must be specified in pairs
라는 에러가 발생
해당 에러는 레이아웃을 잡을떄 second view 가 없거나 할떄 일어나는 문제
상황
레이아웃 부분
showMapToolTip.snp.makeConstraints { make in make.top.equalTo(30) make.trailing.equalTo(-12) }
해당 view는 네비게이션 바 에 추가된 view이다
view가 아니라 네비게이션바 위치에 있어야 하고 view.addSubview() 를 한 경우
네비게이션 바에 덮혀서 가려질수 있기 때문에 navigationbar.addSubView() 했었음
navigationController?.navigationBar.addSubview(showMapToolTip)
해당 에러는 계속 나타나지 않고 간헐적으로 운영 환경에서 발생하므로 재현이 불가함
해결
더 안정적으로 add Subview 하여 레이아웃 잡을때 secon view가 없을 가능성을 최소화 함
navigationController?.view 를 활용하여 구현
guard let navigationView = navigationController?.view else { return } navigationView.addSubview(showMapToolTip) showMapToolTip.snp.makeConstraints { make in make.top.equalTo(navigationView.safeAreaLayoutGuide.snp.top).offset(30) make.trailing.equalToSuperview().offset(-12) }
'개발 > Swift' 카테고리의 다른 글
Compositional Layout+ Diffable Datasource 활용 가이드 (0) 2024.08.27 [Error] suspend resume partial function for XXX (0) 2024.08.20 [Swift] CoreData 사용해보기: CRUD 구현 가이드 (0) 2024.05.18 [Swift] Tab bar 와 Page view를 동시에 사용할때 (0) 2024.05.18 iOS 앱 자동화 Fastlane Fastfile 작성 Cheatsheet (0) 2024.04.29