设置 NavigationBar 半透明时出现错误
Posted
技术标签:
【中文标题】设置 NavigationBar 半透明时出现错误【英文标题】:I got a bug when set NavigationBar translucent 【发布时间】:2016-04-06 06:53:54 【问题描述】:当我将NavigationBar
设置为半透明时,我希望NavigationBar
下面不会有阴影线,并且StatusBar
与视图背景具有相同的背景
我的代码是这样的:
[self.navigationController.navigationBar setTranslucent:YES];
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"translucent_image"] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
它们在 iPhone6 Plus 和 iPhone 6s Plus 等 5.5 英寸 iPhone 上完美运行,但在 iPhone 6s 和 iPhone 5s 等较小的 iPhone 上运行时,我遇到了类似错误的问题,StatusBar
变成黑色!它们在 ios 8.2、iOS 8.3 和 iOS 9.2 上是相同的代码,唯一的区别是屏幕!
我尝试将BarMetrics
从UIBarMetricsDefault
更改为UIBarMetricsCompact
或UIBarMetricsDefaultPrompt
以解决此问题,最后StatusBar
运行良好,但阴影线在所有iPhone 中都出现了!
[self.navigationController.navigationBar setTranslucent:YES];
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"translucent_image"] forBarMetrics: UIBarMetricsCompact];
self.navigationController.navigationBar.shadowImage = [UIImage new];
好奇怪!这是iOS的bug吗?
【问题讨论】:
【参考方案1】:尝试将您的代码更改为
[self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];
[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc]init] forBarMetrics:UIBarMetricsDefault];
这对我有用(即我没有得到阴影)
【讨论】:
原来是因为图像半透明的原因? 这似乎是因为 UIBarMetricsDefault。从文档中我无法弄清楚为什么会有差异。以上是关于设置 NavigationBar 半透明时出现错误的主要内容,如果未能解决你的问题,请参考以下文章