如何在iOS 13中以编程方式隐藏和显示状态栏?
我使用了以下常用方法来隐藏和再次显示状态栏。它在iOS 13之前工作正常,但当我为具有iOS 13或更高版本的设备运行它时,会出现以下崩溃如何在iOS 13中以编程方式隐藏和显示状态栏?,ios,ios13,uiapplication,uistatusbar,Ios,Ios13,Uiapplication,Uistatusbar,我使用了以下常用方法来隐藏和再次显示状态栏。它在iOS 13之前工作正常,但当我为具有iOS 13或更高版本的设备运行它时,会出现以下崩溃 +(void)showStatusBar:(BOOL)show { UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"]; if ([statusBar respond
+(void)showStatusBar:(BOOL)show
{
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
[[UIApplication sharedApplication] setStatusBarHidden:!show withAnimation:UIStatusBarAnimationNone];
}
}
获取iOS 13的以下错误
由于未捕获异常而终止应用程序
'NSInternalInconsistencyException',原因:'调用了应用程序-状态栏或
-UIApplication上的statusBarWindow:此代码必须更改,因为不再有状态栏或状态栏窗口。使用
而不是窗口场景中的statusBarManager对象。”
如何仅隐藏和显示某些视图控制器的状态栏 如果要在不同的视图控制器上显示/隐藏状态栏,需要:
var prefersStatusBarHidden:Bool
var statusBarHidden = true {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
override var prefersStatusBarHidden: Bool {
return statusBarHidden
}
- 你可以在这里找到更详细的解释
- 在for
中,您还可以找到以下报价:UIStatusBarManager
@太奇怪了。您能否再次检查是否已完成步骤1:在Info.plist中添加“查看控制器基本状态栏外观”选项,并将其设置为“是”。没有它就没有区别
var statusBarHidden = true {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
override var prefersStatusBarHidden: Bool {
return statusBarHidden
}