【发布时间】:2015-11-22 02:44:41
【问题描述】:
我在 info,plist 上将基于视图控制器的状态栏外观设置为 NO。我还设置了 application.statusBarHidden = true 但是状态栏会在出现 QLPreviewControl 时自动重新出现。我不想在我的应用程序上显示状态栏。怎么可能隐藏?
【问题讨论】:
我在 info,plist 上将基于视图控制器的状态栏外观设置为 NO。我还设置了 application.statusBarHidden = true 但是状态栏会在出现 QLPreviewControl 时自动重新出现。我不想在我的应用程序上显示状态栏。怎么可能隐藏?
【问题讨论】:
QLPreviewController 通过 XPC 从单独的系统进程为您工作。这就是为什么您尝试对其进行更改的所有内容在真实实例上实际上都无法更改的原因。
它还根据全屏模式以自己的方式管理状态栏(例如,当您打开 PDF 文件并点击导航栏时)。
但是,您可以将其子类化并尝试在您自己的控制器中覆盖您的属性。
尝试在子类中设置/覆盖以下属性:
modalPresentationCapturesStatusBarAppearance = true
prefersStatusBarHidden = true
setNeedsStatusBarAppearanceUpdate()
可能是您必须在用户点击导航栏以隐藏然后再次点击以显示后恢复状态栏隐藏状态。
【讨论】:
我遇到了同样的问题并找到了类似的解决方案。在 Objective-C 中,这些步骤对我有用:
QLPreviewController。在 .h 文件中,添加@import QuickLook;。在.m文件中,添加这个方法:
- (BOOL)prefersStatusBarHidden {
return YES;
}
在 info.plist 中,如果布尔属性“基于视图控制器的状态栏外观”存在,则将其值设置为 YES。
在您的 AppDelegate 类中,将此行添加到 didFinishLaunchingWithOptions:
[UIApplication sharedApplication].statusBarHidden = YES;
如果您的 info.plist 文件已经将“状态栏最初隐藏”设置为“是”,则可能不需要第 4 步。
【讨论】: