我试图在我的一个UIViewControllers(Swift 4)中隐藏状态栏.
首先,我设置基于控制器的视图状态栏的外观到是在Info.plist
.
我prefersStatusBarHidden
在我的控制器中覆盖了该属性:
override var prefersStatusBarHidden: Bool {
return true
}
Run Code Online (Sandbox Code Playgroud)
viewDidLoad()
,我添加setNeedsStatusBarAppearanceUpdate()
了强制prefersStatusBarHidden
读取属性的函数.毕竟,我仍然看到状态栏UIViewController
.
有谁可以帮助我吗?
Vir*_*ala 24
只需添加以下代码,即可隐藏任何或所有视图控制器中的状态栏:
override var prefersStatusBarHidden: Bool {
return true
}
Run Code Online (Sandbox Code Playgroud)
任何包含该代码的视图控制器都将默认隐藏状态栏.
如果要在状态栏中设置动画,只需在视图控制器上调用setNeedsStatusBarAppearanceUpdate(),这将强制再次读取prefersStatusBarHidden,此时您可以返回不同的值.如果你愿意,你打电话给setNeedsStatusBarAppearanceUpdate()实际上是一个动画块,这将导致状态栏隐藏或显示在一个平稳的方式中.
小智 7
您可能已经找到了自己的解决方案,但我这样做了:
override func viewWillAppear(_ animated: Bool) {
// Sets the status bar to hidden when the view has finished appearing
let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
statusBar.isHidden = true
}
override func viewWillDisappear(_ animated: Bool) {
// Sets the status bar to visible when the view is about to disappear
let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
statusBar.isHidden = false
}
Run Code Online (Sandbox Code Playgroud)
如果您以模态显示视图控制器,请尝试
viewController.modalPresentationCapturesStatusBarAppearance = true
Run Code Online (Sandbox Code Playgroud)
小智 5
虽然有些实现更清晰,例如:
UIApplication.shared.isStatusBarHidden = true
在转换期间有一些奇怪的剪辑动画.虽然更冗长,但我更喜欢@ MachTurtle的解决方案:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
if let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as? UIView{
statusBar.isHidden = true
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(true)
let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
statusBar.isHidden = false
}
Run Code Online (Sandbox Code Playgroud)
尝试一下,对我很有用.
归档时间: |
|
查看次数: |
19619 次 |
最近记录: |