我们如何在iOS 9中为整个应用程序设置Status Bar的Light Content样式?

时间:2015-09-23 02:53:18

标签: ios objective-c swift uistatusbar

我想将Light Content样式应用于整个应用程序。

iOS 9中不推荐使用以下方法,但没有替换方法。

  

-setStatusBarStyle:动画:

     

设置状态栏的样式,可选择为过渡设置动画   新风格。

正在AppDelegate中工作,如:

Swift 1.2代码:

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)

但是当我将项目升级到iOS 9 / Swift 2时,他们会给我一个警告信息:

<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
<Error>: CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
<Error>: CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.

根据apple forum和此回答CGContextSaveGState: invalid context 0x0 Error only on device

的解决方案

因此,我已根据解决方案从UIViewControllerBasedStatusBarAppearance文件中删除了属性info.plist

现在的情况是如何在iOS 9中为整个应用程序设置Status Bar的Light Content样式?

来自论坛:

enter image description here

我不想为每个视图设置Light Content。

有什么建议吗?

Objective-C应该有同样的问题。

2 个答案:

答案 0 :(得分:27)

您可以使用UINavigationController并将其导航栏的barStyle设置为.Black来节省大量工作。你只需要这样做一次;你可以在故事板编辑器中完成它。

只要此UINavigationController处于命令状态,这将自动将状态栏的样式设置为.LightContent

答案 1 :(得分:0)

您还可以使用: UIApplication.shared.statusBarStyle = .lightContent。它也适用于swift3。