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

gzjq41n4  于 2023-10-21  发布在  iOS
关注(0)|答案(1)|浏览(253)

我正在尝试将导航添加到我的iOS应用程序。我正在Xcode 15和Swift 5.8上模拟iPhone 15和iOS 17。
我在几个教程中看到,当导航控制器通过编辑器->嵌入->导航控制器添加到故事板时,导航栏应该立即在预览中可见,如下所示:

但我什么也看不见:

我没有改变任何属性的导航栏(实际上出现在视图层次结构的方式)。我做错了什么?

4urapxun

4urapxun1#

导航栏的默认外观在iOS 15中有所更改。TN3106
iOS 15中的UINavigationBar对外观设置进行了更改。它扩展了scrollEdgeAppearance的使用,默认情况下,它会产生一个透明的背景,所有的导航栏样式。
现在导航栏默认有一个透明的背景,这就是为什么你看不到它。
您应该使用UINavigationBarAppearance API来配置导航栏。要像以前一样获得半透明的背景,您应该为navigationBar.scrollEdgeAppearance分配一个配置为“默认背景”的UINavigationBarAppearance

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

如果这个值为nil(默认值),则将使用standardAppearance的透明版本。
要在情节提要中执行此操作,您可以选择层次结构中的导航栏,并选中“滚动边缘”复选框:

请注意,连接到UINavigationController的视图控制器的导航栏仍然会错误地显示透明导航栏(不确定这是否是故意的)。当你构建和运行应用程序时,它确实会表现出预期的行为。
查看TN3106了解更多自定义导航栏的方法。

相关问题