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

Ash*_*kad 11 objective-c ios uistatusbar swift

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

在没有替换方法的情况下,iOS 9中不推荐使用以下方法.

-setStatusBarStyle:动画:

设置状态栏的样式,可选择设置过渡到新样式的动画.

在以下工作AppDelegate:

Swift 1.2代码:

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)
Run Code Online (Sandbox Code Playgroud)

但是当我将项目升级到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.
Run Code Online (Sandbox Code Playgroud)

因此,根据苹果论坛的解决方案和来自此答案的CGContextSaveGState:无效上下文0x0仅在设备上出错

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

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

来自论坛:

在此输入图像描述

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

有什么建议?

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

mat*_*att 28

您可以通过使用一个UINavigationController并设置其导航栏的为自己节省大量的工作barStyle.Black.你只需要这样做一次; 你可以在storyboard编辑器中做到这一点.

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

  • 在这种情况下,您需要将整个接口放入一个自定义父容器视图控制器,该控制器充当整个应用程序的根视图控制器,并实现`preferredStatusBarStyle`.无论是那只是咬住子弹并在任何地方实现`preferredStatusBarStyle`. (2认同)
  • 好.谢谢.请用此声明更新答案.所以任何人都可以从你的答案中得到帮助 (2认同)
  • [[UINavigationBar外观] setBarStyle:UIBarStyleBlack]; (2认同)