我有一个应用程序,重要的是隐藏/显示状态栏并动态切换其样式。以前,通过以下调用非常容易:
[[UIApplication sharedApplication] setStatusBarHidden:NO];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
但他们已被弃用,我不太了解新方法的工作原理。我可以通过在plist中添加以下行来设置样式和初始可见性:
View controller-based status bar appearance = YES
然后将以下方法添加到我的视图控制器:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleDefault;
}
- (BOOL)prefersStatusBarHidden
{
return NO;
}
这在视图控制器上作为一个整体工作正常(作为初始化视图时调用的静态设置),但我无法动态更改它们,这就是我需要的。
我怎么能实现这个目标?
答案 0 :(得分:1)
我不想回答我自己的问题,但在做了一些挖掘后,我发现了如何手动调用该方法。首先,我创建了一个BOOL变量,可以动态切换,然后在prefersStatusBarHidden方法中返回。
- (BOOL)prefersStatusBarHidden
{
return isStatusBarHidden;
}
然后,每当我想隐藏/显示状态栏时,我更改了isStatusBarHidden的值并强制视图检查其状态栏是否需要像这样更新:
isStatusBarHidden = NO;
[self setNeedsStatusBarAppearanceUpdate];
在运行iOS9及更高版本的设备上完美适合我。