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 appearance
到 NO
下 Info.plist
。您可以检查状态栏的设置here
试试这个:(UIApplication.shared.value(forKey: "statusBarWindow") as? UIWindow)?.isHidden = false
崩溃并出现此错误 UIApplication: 此代码必须更改,因为不再有状态栏或状态栏窗口。在窗口场景中使用 statusBarManager 对象。'
@kAiN 你检查我的答案了吗?我现在已经用Status bar is initially hidden
作为YES
和View controller-based status bar appearance
作为NO
在plist
中的空项目进行了测试,没有添加任何代码 - 状态栏在 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 中的 prefersStatusBarHidden 问题
iOS 13 - UIApplicationDelegate 中的 applicationWillTerminate 等效于 UISceneDelegate?
SwiftUI - edgesIgnoringSafeArea 在 iOS 13.4 中的行为不同
UITableView 中的 iOS 13 UISegmentedControl 缓存先前的选择
为啥在 iOS 13 中的 textfieldBeginEditing 之后立即调用 textfieldDidEndEditing?在 iOS 较低版本中运行良好