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

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

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

一个简单的方法就是在导航栏的顶部添加一个视图,它是状态栏的确切大小。

例如,要使状态栏变为红色,可以将以下内容添加到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) 

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

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

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

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