运行时隐藏/显示状态栏iOS 9+
Runtime Hide / Show Status Bar 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;
}
然后,每当我想要 hide/show 状态栏时,我都会更改 isStatusBarHidden 的值并强制视图检查其状态栏是否需要像这样更新:
isStatusBarHidden = NO;
[self setNeedsStatusBarAppearanceUpdate];
我在 运行 iOS9 及更高版本的设备上完美运行。
我有一个应用程序,其中隐藏/显示状态栏并即时切换其样式很重要。以前,使用以下调用非常容易:
[[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;
}
然后,每当我想要 hide/show 状态栏时,我都会更改 isStatusBarHidden 的值并强制视图检查其状态栏是否需要像这样更新:
isStatusBarHidden = NO;
[self setNeedsStatusBarAppearanceUpdate];
我在 运行 iOS9 及更高版本的设备上完美运行。