我正在使用Swift制作应用程序,我希望状态栏和导航栏有不同的颜色,例如谷歌翻译应用程序或iOS上的谷歌音乐应用程序。
我已经知道状态栏和导航栏的颜色不能单独设置,但有什么类型的技巧可以做到吗?
答案 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应用程序中使用了这个方法,它很好地解决了类似的问题。对于普通的背景颜色,我制作了一个像素宽度的单色图像。