我正在尝试向我的 iOS 应用程序添加导航。我正在 Xcode 15 和 Swift 5.8 上模拟带有 iOS 17 的 iPhone 15。
我在几个教程中看到,当通过编辑器 -> 嵌入 -> 导航控制器将导航控制器添加到故事板时,导航栏应该立即在预览中可见,如下所示:
我没有更改导航栏的任何属性(顺便说一下,它实际上出现在视图层次结构上)。 我做错了什么?
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 了解自定义导航栏的更多方法。