2017-06-29 77 views
1

我有一个应用程序,它隐藏/显示状态栏并在运行中切换其风格非常重要。以前,通过以下调用很容易:运行时隐藏/显示状态栏iOS 9+

[[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

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

- (BOOL)prefersStatusBarHidden 
{ 
    return isStatusBarHidden; 
} 

然后,每当我想隐藏/显示状态栏,我改变isStatusBarHidden的价值,并迫使以检查其居留制棒需要像这样被更新:

isStatusBarHidden = NO; 
[self setNeedsStatusBarAppearanceUpdate]; 

适用于运行iOS9及更高版本的设备。