作者:mobiledu2502890777 | 来源:互联网 | 2023-01-16 10:59
我将自定义背景应用于导航控制器导航栏
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navbar"] forBarPosition:UIBarPositionTop barMetrics:UIBarMetricsDefault];
iOS10
在iOS10中,背景应用正确,导航栏显示在状态栏下方:
iOS11
但是,在iOS11中,看起来背景图像始终应用于状态栏后面.我为'forBarPosition'尝试了不同的值,但这不会改变行为.
我已经在一个独立的应用程序中隔离了这个问题,该应用程序包含一个uinavigationcontroller和一行代码,如上所述.我正在使用iPhone 8模拟器进行测试.我在我的应用程序中使用标准导航控制器和导航栏类.
我究竟做错了什么?
1> Perry..:
我遇到了同样的问题.和你一样,forBarPosition没有做任何事来解决这个问题,即使它应该是这样.
我会把我的解决方案称为解决方案.
我使用的图像是44px高.由于我知道状态栏是20px,我创建了一个64px高的新图像.我想要的效果包括在状态栏下扩展图像,这就像我想要的那样工作.
状态栏是透明的,因此您可以将前20px设置为黑色或透明或任何您想要的效果.
到目前为止,这对于iOS 11和运行iOS 9.3.5的iPod touch设备的模拟器和iPhone SE设备都适用.
希望这对你有所帮助.
编辑:另外一点.对我来说也有用的是使用可拉伸的图像.这填补了整个空间而不像在您的示例中那样重复,但是,我使用的图像无法拉伸,因此最终这对我的场景不起作用.