iOS 17 - 在 Xcode 15 中添加导航控制器时导航栏不会立即可见

问题描述 投票:0回答:1

我正在尝试向我的 iOS 应用程序添加导航。我正在 Xcode 15 和 Swift 5.8 上模拟带有 iOS 17 的 iPhone 15。

我在几个教程中看到,当通过编辑器 -> 嵌入 -> 导航控制器将导航控制器添加到故事板时,导航栏应该立即在预览中可见,如下所示:

但是我什么也看不到:

我没有更改导航栏的任何属性(顺便说一下,它实际上出现在视图层次结构上)。 我做错了什么?

ios uinavigationcontroller storyboard uinavigationbar
1个回答
0
投票

iOS 15 中导航栏的默认外观已更改。来自 TN3106:

iOS 15 中的

UINavigationBar
对其外观设置进行了更改。它将默认情况下生成透明背景的
scrollEdgeAppearance
的用法扩展到所有导航栏样式。

现在导航栏默认有透明背景,这就是为什么你看不到它。

您应该使用

UINavigationBarAppearance
API 来配置导航栏。要像以前一样获得半透明背景,您应该将配置为“默认背景”的
UINavigationBarAppearance
分配给
navigationBar.scrollEdgeAppearance

let appearance = UINavigationBarAppearance()
appearance.configureWithDefaultBackground()
navigationController?.navigationBar.scrollEdgeAppearance = appearance

如果此值为 nil(默认值),则将使用

standardAppearance
的透明版本。

要在故事板中执行此操作,您可以选择层次结构中的导航栏,然后选中“滚动边缘”复选框:

请注意,连接到

UINavigationController
的视图控制器的导航栏仍然会错误地显示透明导航栏(不确定这是否是故意的)。当您构建和运行应用程序时,它确实表现出了预期的行为。

请参阅 TN3106 了解自定义导航栏的更多方法。

© www.soinside.com 2019 - 2024. All rights reserved.