안녕하세요 ◠‿◠ 고고입니다.
Xcode를 업데이트하고나니 아래같이 네비게이션뷰에 타이틀을 지정하면 레이아웃 경고가 콘솔에 뜨더군요.
import SwiftUI
struct HomeView: View {
var body: some View {
NavigationView {
Text("Text")
.navigationBarTitle("My Title")
}
}
}
2021-11-06 15:58:37.451585+0900 Daily Bible[17299:601787] [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:0x6000029287d0 'BIB_Leading_Leading' H:|-(0)-[_UIModernBarButton:0x7fb856a90f70] (active, names: '|':_UIButtonBarButton:0x7fb854f8d640 )>",
"<NSLayoutConstraint:0x600002922850 'UINav_static_button_horiz_position' _UIModernBarButton:0x7fb856a90f70.leading == UILayoutGuide:0x6000033f9c00'UIViewLayoutMarginsGuide'.leading (active)>",
"<NSLayoutConstraint:0x600002922800 'UINavItemContentGuide-leading' H:[_UIButtonBarButton:0x7fb854f8d640]-(6)-[UILayoutGuide:0x6000033f9420'UINavigationBarItemContentLayoutGuide'] (active)>",
"<NSLayoutConstraint:0x60000290b430 'UINavItemContentGuide-trailing' UILayoutGuide:0x6000033f9420'UINavigationBarItemContentLayoutGuide'.trailing == _UINavigationBarContentView:0x7fb854f8c9f0.trailing (active)>",
"<NSLayoutConstraint:0x600002920c30 'UIView-Encapsulated-Layout-Width' _UINavigationBarContentView:0x7fb854f8c9f0.width == 0 (active)>",
"<NSLayoutConstraint:0x60000290b7f0 'UIView-leftMargin-guide-constraint' H:|-(8)-[UILayoutGuide:0x6000033f9c00'UIViewLayoutMarginsGuide'](LTR) (active, names: '|':_UINavigationBarContentView:0x7fb854f8c9f0 )>"
)
해결 방법은 아래 코드처럼 .navigationViewStyle(StackNavigationViewStyle()) 를 추가해주시면 됩니다.
import SwiftUI
struct HomeView: View {
var body: some View {
NavigationView {
Text("Text")
.navigationBarTitle("My Title")
}.navigationViewStyle(StackNavigationViewStyle())
}
}
하지만 StackNavigationViewStyle() 는 아이패드에서 사이드바 없이 한 화면밖에 표시되지 않으니 주의하세요.
+) 위 코드는 iOS 13 기준의 코드입니다.
navigationBarTitle는 iOS 14.0부터 더 이상 사용되지 않습니다.
iOS 14 이상부터 지원하신다면 navigationTitle 또는 navigationBarTitleDisplayMode 함수를 사용하세요. 👍
또한 Xcode 13 이상 시
.navigationViewStyle(StackNavigationViewStyle())
를
.navigationViewStyle(.stack)
이렇게 사용할 수 있습니다.
'SwiftUI' 카테고리의 다른 글
SwiftUI - Lazy Navigation (0) | 2022.03.16 |
---|---|
[SwiftUI] `ForEach(_:content:)` should only be used for *constant* data. (0) | 2021.11.25 |
[SwiftUI] Previews in Xcode 번역 (0) | 2021.11.06 |
[SwiftUI] iOS 13부터 지원하기 (0) | 2021.11.04 |
[SwiftUI] Xcode 12 타입 추론 에러 (0) | 2021.11.04 |
댓글