按下按钮时,我似乎无法隐藏根视图控制器(A)中的状态栏。
我已将info.plist Status bar is initially hidden
和View controller-based status bar appearance
中的属性设置为YES
。
如果我实施override var prefersStatusBarHidden: Bool { get }
,状态栏将被明确隐藏(或不显示)。
我需要什么
我希望状态栏显示在(A)中,但是当我按下一个将子视图控制器添加到(A)的按钮时隐藏状态栏。
我已尝试将prefersStatusBarHidden
设置为false
,并在按下按钮时使用UIApplication.shared.isStatusBarHidden = true
将其隐藏,但这不起作用。
肯定有一些我错了,有人可以开导我吗?
提前致谢。
PS:我只需要它是隐形的,不一定是“隐藏”在Swift意义上。
答案 0 :(得分:12)
隐藏状态栏
UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelStatusBar
要恢复状态栏
UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelNormal
答案 1 :(得分:0)
您可以创建一个变量来保存一个布尔值来设置状态栏是否隐藏
var _isStatusBarHidden: Bool = false
然后创建其getter和setter
var isStatusBarHidden: Bool {
get{
return _isStatusBarHidden
}
set {
if _isStatusBarHidden != newValue {
_isStatusBarHidden = newValue
self.setNeedsStatusBarAppearanceUpdate()
}
}
}
您必须覆盖prefersStatusBarHidden
属性
override var prefersStatusBarHidden: Bool {
return self._isStatusBarHidden
}
最后一件事是当用户按下按钮时将变量设置为true
:
self.isStatusBarHidden = true
答案 2 :(得分:0)
@Alexandre Lara的代码略有改进:
var isStatusBarHidden: Bool = false {
didSet {
if oldValue != self.isStatusBarHidden {
self.setNeedsStatusBarAppearanceUpdate()
}
}
}
override var prefersStatusBarHidden: Bool {
return self.isStatusBarHidden
}