运行时隐藏/显示状态栏iOS 9 +

时间:2017-06-29 19:39:23

标签: ios iphone xcode6 ios9 statusbar

我有一个应用程序,重要的是隐藏/显示状态栏并动态切换其样式。以前,通过以下调用非常容易:

[[UIApplication sharedApplication] setStatusBarHidden:NO];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

但他们已被弃用,我不太了解新方法的工作原理。我可以通过在plist中添加以下行来设置样式和初始可见性:

 View controller-based status bar appearance = YES

然后将以下方法添加到我的视图控制器:

 - (UIStatusBarStyle)preferredStatusBarStyle
 {
     return UIStatusBarStyleDefault;
 }

 - (BOOL)prefersStatusBarHidden
 {
     return NO;
 }

这在视图控制器上作为一个整体工作正常(作为初始化视图时调用的静态设置),但我无法动态更改它们,这就是我需要的。

我怎么能实现这个目标?

1 个答案:

答案 0 :(得分:1)

我不想回答我自己的问题,但在做了一些挖掘后,我发现了如何手动调用该方法。首先,我创建了一个BOOL变量,可以动态切换,然后在prefersStatusBarHidden方法中返回。

 - (BOOL)prefersStatusBarHidden
 {
     return isStatusBarHidden;
 }

然后,每当我想隐藏/显示状态栏时,我更改了isStatusBarHidden的值并强制视图检查其状态栏是否需要像这样更新:

 isStatusBarHidden = NO;
 [self setNeedsStatusBarAppearanceUpdate];

在运行iOS9及更高版本的设备上完美适合我。