我一直在用
UIApplication.sharedApplication().setStatusBarStyle()
Run Code Online (Sandbox Code Playgroud)
在我的appDelegate中,它运行良好,但自iOS 9以来,这种方法已被弃用,我找不到替代方案.
我想将整个应用程序的状态栏样式更改为.LightContent,但xCode给出的唯一建议是在每个VC中单独处理;
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何为整个应用程序这样做?
提前致谢
更新:我正在使用Swift 2.0的XCode 7 Beta
当我尝试在iPhone上运行我的应用程序时,我得到以下3个错误:
<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)
当我启用CG_CONTEXT_SHOW_BACKTRACE变量时,我得到这个:
Backtrace:
<<redacted>+40>
<<redacted>+432>
<<redacted>+144>
<<redacted>+172>
<<redacted>+332>
<<redacted>+112>
<<redacted>+820>
<<redacted>+688>
<<redacted>+356>
<<redacted>+80>
<<redacted>+808>
<<redacted>+344>
<<redacted>+420>
<<redacted>+104>
<<redacted>+284>
<<redacted>+556>
<<redacted>+504>
<<redacted>+1792>
<<redacted>+220>
<<redacted>+284>
<<redacted>+920>
<<redacted>+168> …Run Code Online (Sandbox Code Playgroud) 所以我以前用过:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent
animated:YES];
Run Code Online (Sandbox Code Playgroud)
动画状态栏样式的变化,从暗到亮,反之亦然
但是,自iOS 9起,此方法已弃用.
我更改为使用preferredStatusBarStyle以下@serenn的答案,而不是调用preferredStatusBarStyle
它确实可以改变旧式的状态栏样式,但没有动画.
文件说:
如果此方法的返回值更改,请调用setNeedsStatusBarAppearanceUpdate方法.
但是我不知道在哪里调用它,我试过把它放在viewWillAppear中,但没有运气.
preferredStatusBarUpdateAnimation 仍为默认值:UIStatusBarAnimationFade
所以我很困惑.寻找如何动画为已弃用方法的答案.提前致谢!