iOS 16 NavigationBar 设置大标题并隐藏内联标题

Jan*_*ker 5 swift swiftui uihostingcontroller ios16

在检查 iOS 16 上的应用程序错误时,我们发现导航栏上的行为发生了变化,即使在非 14 Pro 型号上也是如此。有多个问题,我们想知道如何解决它们。所有问题都没有更改代码。只需在 iOS 16 上运行该应用程序即可。

  1. 在某些视图上,iOS 将标题样式更改为“大”。它曾经是并且应该是内联的。
  2. 在某些视图上,标题会在推送动画期间内联显示,但一旦动画完成,标题样式就会更改为大。这会导致 UI 跳转。在其他视图中,标题完全消失。
  3. 在某些视图中,标题是正确内联的,但是当显示工作表并关闭时,它会导致标题从导航栏中完全消失。

我们使用 UIHostingControllers 来包装所有 SwiftUI 视图。也许这里有一些问题。

Jan*_*ker 2

看起来UIHostingController和 SwiftUI 在 iOS 16 上有点冲突。在 ViewController 上设置也可以通过 SwiftUI 设置的属性时,iOS 会感到困惑。尝试在放入 HostingController 的根 SwiftUI 视图中设置标题和标题样式:

var body: some View {
    yourContentViewsHere
        .navigationTitle("NavBar title")
        .navigationBarTitleDisplayMode(.inline)
}
Run Code Online (Sandbox Code Playgroud)

问题中的所有问题都应该通过此修复得到解决。