我正在尝试将导航添加到我的iOS应用程序。我正在Xcode 15和Swift 5.8上模拟iPhone 15和iOS 17。我在几个教程中看到,当导航控制器通过编辑器->嵌入->导航控制器添加到故事板时,导航栏应该立即在预览中可见,如下所示:
但我什么也看不见:
我没有改变任何属性的导航栏(实际上出现在视图层次结构的方式)。我做错了什么?
4urapxun1#
导航栏的默认外观在iOS 15中有所更改。TN3106:iOS 15中的UINavigationBar对外观设置进行了更改。它扩展了scrollEdgeAppearance的使用,默认情况下,它会产生一个透明的背景,所有的导航栏样式。现在导航栏默认有一个透明的背景,这就是为什么你看不到它。您应该使用UINavigationBarAppearance API来配置导航栏。要像以前一样获得半透明的背景,您应该为navigationBar.scrollEdgeAppearance分配一个配置为“默认背景”的UINavigationBarAppearance。
UINavigationBar
scrollEdgeAppearance
UINavigationBarAppearance
navigationBar.scrollEdgeAppearance
let appearance = UINavigationBarAppearance() appearance.configureWithDefaultBackground() navigationController?.navigationBar.scrollEdgeAppearance = appearance
如果这个值为nil(默认值),则将使用standardAppearance的透明版本。要在情节提要中执行此操作,您可以选择层次结构中的导航栏,并选中“滚动边缘”复选框:
standardAppearance
请注意,连接到UINavigationController的视图控制器的导航栏仍然会错误地显示透明导航栏(不确定这是否是故意的)。当你构建和运行应用程序时,它确实会表现出预期的行为。查看TN3106了解更多自定义导航栏的方法。
UINavigationController
1条答案
按热度按时间4urapxun1#
导航栏的默认外观在iOS 15中有所更改。TN3106:
iOS 15中的
UINavigationBar
对外观设置进行了更改。它扩展了scrollEdgeAppearance
的使用,默认情况下,它会产生一个透明的背景,所有的导航栏样式。现在导航栏默认有一个透明的背景,这就是为什么你看不到它。
您应该使用
UINavigationBarAppearance
API来配置导航栏。要像以前一样获得半透明的背景,您应该为navigationBar.scrollEdgeAppearance
分配一个配置为“默认背景”的UINavigationBarAppearance
。如果这个值为nil(默认值),则将使用
standardAppearance
的透明版本。要在情节提要中执行此操作,您可以选择层次结构中的导航栏,并选中“滚动边缘”复选框:
请注意,连接到
UINavigationController
的视图控制器的导航栏仍然会错误地显示透明导航栏(不确定这是否是故意的)。当你构建和运行应用程序时,它确实会表现出预期的行为。查看TN3106了解更多自定义导航栏的方法。