iOS 13 中的 prefersStatusBarHidden 问题

Posted

技术标签:

【中文标题】iOS 13 中的 prefersStatusBarHidden 问题【英文标题】:prefersStatusBarHidden issue in iOS 13 【发布时间】:2020-05-01 03:33:13 【问题描述】:

大家好,我正试图将我的 statusBar 隐藏在 View Controller 中,但它似乎不起作用.. 我使用了该功能:


 override var prefersStatusBarHidden: Bool 
         return true
    

我还将plist文件中的View controller-based status bar appearance设置为YES

我的状态栏不想隐藏...我哪里做错了?

【问题讨论】:

View controller-based status bar appearanceNOInfo.plist。您可以检查状态栏的设置here 试试这个:(UIApplication.shared.value(forKey: "statusBarWindow") as? UIWindow)?.isHidden = false 崩溃并出现此错误 UIApplication: 此代码必须更改,因为不再有状态栏或状态栏窗口。在窗口场景中使用 statusBarManager 对象。' @kAiN 你检查我的答案了吗?我现在已经用Status bar is initially hidden 作为YESView controller-based status bar appearance 作为NOplist 中的空项目进行了测试,没有添加任何代码 - 状态栏在 ios13.3 和 iPhone11 上是隐藏的 @VadimNikolaev 是的,我知道,但我需要我的状态栏不仅在特定的视图控制器中可见 【参考方案1】:

您似乎正试图在单个ViewController 中专门隐藏状态栏。

为了做到这一点,你需要在ViewController中拥有以下内容

self.modalPresentationCapturesStatusBarAppearance = true

override var prefersStatusBarHidden: Bool 
      return false

我还在我的.plist 中添加了View controller-based status bar appearance 并将其设置为YES

在最新的 iOS 13 上测试。

【讨论】:

它对我有用。但是在 iOS 14 上,我不需要设置 self.modalPresentationCapturesStatusBarAppearance = true ,它也很好用。【参考方案2】:

如果目标视图控制器嵌入在另一个容器视图控制器中,例如 UINavigationController,您需要继承该容器视图控制器并覆盖其 childForStatusBarHidden 以返回目标视图控制器。

【讨论】:

以上是关于iOS 13 中的 prefersStatusBarHidden 问题的主要内容,如果未能解决你的问题,请参考以下文章

IOS 13中的iOS后台任务不起作用

iOS 13 中的 prefersStatusBarHidden 问题

iOS 13 - UIApplicationDelegate 中的 applicationWillTerminate 等效于 UISceneDelegate?

SwiftUI - edgesIgnoringSafeArea 在 iOS 13.4 中的行为不同

UITableView 中的 iOS 13 UISegmentedControl 缓存先前的选择

为啥在 iOS 13 中的 textfieldBeginEditing 之后立即调用 textfieldDidEndEditing?在 iOS 较低版本中运行良好