【问题标题】:I got a bug when set NavigationBar translucent设置 NavigationBar 半透明时出现错误
【发布时间】: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 上是相同的代码,唯一的区别是屏幕!

我尝试将BarMetricsUIBarMetricsDefault 更改为UIBarMetricsCompactUIBarMetricsDefaultPrompt 以解决此问题,最后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吗?

【问题讨论】:

    标签: ios objective-c iphone


    【解决方案1】:

    尝试将您的代码更改为

    [self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];
    [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc]init] forBarMetrics:UIBarMetricsDefault];
    

    这对我有用(即我没有得到阴影)

    【讨论】:

    • 原来是因为图像半透明的原因?
    • 这似乎是因为 UIBarMetricsDefault。从文档中我无法弄清楚为什么会有差异。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多