运行时隐藏/显示状态栏iOS 9+
问题描述:
我有一个应用程序,它隐藏/显示状态栏并在运行中切换其风格非常重要。以前,通过以下调用很容易:运行时隐藏/显示状态栏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;
}
也能正常工作的看法控制器作为一个整体(作为静态设置,在视图初始化时被调用),但我无法即时更改它们,这正是我所需要的。
我怎么能做到这一点?
答
我讨厌回答我自己的问题,但在做了一些挖掘之后,我发现如何手动调用方法。首先,我创建了一个BOOL变量,可以随时切换,然后在prefersStatusBarHidden方法中返回。
- (BOOL)prefersStatusBarHidden
{
return isStatusBarHidden;
}
然后,每当我想隐藏/显示状态栏,我改变isStatusBarHidden的价值,并迫使以检查其居留制棒需要像这样被更新:
isStatusBarHidden = NO;
[self setNeedsStatusBarAppearanceUpdate];
适用于运行iOS9及更高版本的设备。