如何修复 SwiftUI 中的 navigationTitle 和工具栏之间的布局冲突?

Posted

技术标签:

【中文标题】如何修复 SwiftUI 中的 navigationTitle 和工具栏之间的布局冲突?【英文标题】:How do I fix a layout conflict between navigationTitle and toolbar in SwiftUI? 【发布时间】:2021-10-28 18:41:34 【问题描述】:

我希望我的导航栏看起来像这样:

在 NavigationView 中,我使用以下代码来添加标题和 navigationBarItems:

 .navigationBarTitleDisplayMode(.large)
 .navigationTitle("Questions")
 .toolbar(content: 
                    ToolbarItemGroup(placement: .navigationBarTrailing) 
                        Button("Help") showingAbout.toggle()
                        NavigationLink(destination:ImportView())
                            Text("Import")
                        
                    
                    
                )

它看起来像我想要的那样,但是当我运行代码时,我总是遇到布局约束问题:

2021-10-28 20:35:16.370287+0200 merig[50881:1781380] [LayoutConstraints] 无法同时满足约束。 以下列表中的至少一个约束可能是您不想要的。 试试这个: (1)查看每个约束并尝试找出您不期望的; (2) 找到添加了一个或多个不需要的约束的代码并修复它。 ( “<0x600001646e90 h:><0x600001647c00 _uimodernbarbutton:0x13ed237b0.leading="=" uilayoutguide:0x600000c7bc60><0x600001647cf0 h:><0x6000016451d0 uilayoutguide:0x600000c7bb80 _uinavigationbarcontentview:0x13ed1f5a0.trailing><0x60000164b390 _uinavigationbarcontentview:0x13ed1f5a0.><0x600001645090 h:>

<0x600001646e90 h:>

【参考方案1】:

SwiftUI 并不完美,它可能只是thread 中讨论的“日志噪音”。但是,每当我收到有关布局约束的问题时,将 .navigationViewStyle(.stack)(或旧版本 SwiftUI 的等效项)添加到 NavigationView 似乎可以摆脱它们。

【讨论】:

以上是关于如何修复 SwiftUI 中的 navigationTitle 和工具栏之间的布局冲突?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SwiftUI 中的图像修复 NavigationView 列表行中增加的高度"

SwiftUI:如何使用边距 10 修复前导和尾随

SwiftUI NavigationLink 立即导航回来

带有 SidebarListStyle 的 SwiftUI 列表没有圆角?

SwiftUI:如何在 UIViewRepresentable UITextField 上调用 becomeFirstResponder 时修复“通过属性检测到的 AttributeGraph 循环”

SwiftUI 如何修复“无法推断复杂的闭包返回类型;添加显式类型以消除歧义”