更改 UINavigationBar 外观背景图像时状态栏颜色更改

Posted

技术标签:

【中文标题】更改 UINavigationBar 外观背景图像时状态栏颜色更改【英文标题】:Status bar color changed when change UINavigationBar appearance backgroundimage 【发布时间】:2012-11-23 05:11:30 【问题描述】:

我用这行代码来改变导航栏背景:

    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"image.png"] forBarMetrics:UIBarMetricsDefault];

ios6 中,它可以工作,但在 iOS5 中,状态栏的背景也发生了变化,如下图所示:

这是怎么发生的。提前致谢。

还有一件事,我只是想改变UINavigationBar的颜色,所以我用了这段代码:

[[UINavigationBar appearance] setTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"image.png"]]];

它在 iOS6 中运行良好,但在 iOS5 中不行。是什么原因?

【问题讨论】:

您检查您的[[UIApplication sharedApplication] statusBarStyle] 是否设置为UIStatusBarStyleBlackTranslucent 谢谢,Eonil,你的建议很有效。但是无论如何要保持状态栏样式不变,因为即使在此应用退出后,这似乎也会改变状态栏样式? 参考这里:***.com/questions/4393348/… 谢谢,看来开发者可以随意更改状态栏了。希望这不会冒犯我们的用户。它在用户体验指南中吗?我还没有读完。 视情况而定。通常改变颜色或隐藏它(对于沉浸式应用程序)是可以的,但修改状态栏的内容通常是不可接受的。 【参考方案1】:

你可以用这个来设置你的状态栏

 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES];

所以状态栏颜色为黑色,字体颜色为白色..

【讨论】:

以上是关于更改 UINavigationBar 外观背景图像时状态栏颜色更改的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationBar 外观背景图像在 iOS 7.1 中重复和模糊

根据横向/纵向更改 UINavigationBar 背景?

UINavigationBar 背景图片不随旋转而改变

带有大标题的 UINavigationBar 没有背景图片

iPhone中的UINavigationbar背景

更改导航栏背景图像导致视图向上移动