我想将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样式?
来自论坛:
我不想为每个视图设置Light Content。
有什么建议吗?
Objective-C应该有同样的问题。
答案 0 :(得分:27)
您可以使用UINavigationController并将其导航栏的barStyle
设置为.Black
来节省大量工作。你只需要这样做一次;你可以在故事板编辑器中完成它。
只要此UINavigationController处于命令状态,这将自动将状态栏的样式设置为.LightContent
。
答案 1 :(得分:0)
您还可以使用: UIApplication.shared.statusBarStyle = .lightContent。它也适用于swift3。