使用不同的颜色设置导航栏和状态栏

时间:2015-03-24 17:19:23

标签: ios swift

我正在使用Swift制作应用程序,我希望状态栏和导航栏有不同的颜色,例如谷歌翻译应用程序或iOS上的谷歌音乐应用程序。

我已经知道状态栏和导航栏的颜色不能单独设置,但有什么类型的技巧可以做到吗?

3 个答案:

答案 0 :(得分:6)

一种简单的方法是在导航栏顶部添加一个与状态栏完全相同的视图。

例如,要使状态栏变为红色,可以将以下内容添加到viewDidLoad方法中:

let statusBarHeight = CGFloat(20)
let colorView = UIView(frame: CGRectMake(0, -statusBarHeight, self.view.bounds.width, statusBarHeight))
colorView.backgroundColor = UIColor.redColor()
self.navigationController?.navigationBar.addSubview(colorView)

答案 1 :(得分:0)

https://gist.github.com/wh1pch81n/ef921944f732de1c45bb93646b462d6f

您可以获得状态栏的参考。然后更改背景颜色属性。

UIView *subViewWindow = [[UIApplication sharedApplication] valueForKey:@"statusBarWindow"];
((UIView *)subViewWindow[0]).backgroundColor = UIColor.redColor;

答案 2 :(得分:0)

对于这种情况,UINavigationBar的setBackgroundImage:forBarMetrics:是一个不错的解决方案。我在我的obj-C应用程序中使用了这个方法,它很好地解决了类似的问题。对于普通的背景颜色,我制作了一个像素宽度的单色图像。