繁体   English   中英

在按钮上点击Swift 3 / iOS 10隐藏状态栏

[英]Hide status bar on button tap Swift 3 / iOS 10

按下按钮后,似乎无法在根视图控制器(A)中隐藏状态栏。

我已在info.plist中设置属性, Status bar is initially hidden处于Status bar is initially hiddenView controller-based status bar appearanceYES

如果我实现override var prefersStatusBarHidden: Bool { get } ,状态栏将被明确隐藏(或不隐藏)。

我需要的

我希望状态栏显示在(A)中,但是当我按下将子视图控制器添加到(A)的按钮时隐藏。

我尝试将prefersStatusBarHidden设置为false并在按下按钮时使用UIApplication.shared.isStatusBarHidden = true将其隐藏,但这不起作用。

肯定我出了点问题,有人可以启发我吗?

提前致谢。

PS:我只需要它不可见,就Swift而言不一定是“隐藏”的。

隐藏状态栏

UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelStatusBar

带回状态栏

UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelNormal 

您可以创建一个变量来保存布尔值,以设置状态栏是否隐藏

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

@Alexandre Lara的代码略有改进:

var isStatusBarHidden: Bool = false {
    didSet {
        if oldValue != self.isStatusBarHidden {
            self.setNeedsStatusBarAppearanceUpdate()
        }
    }
}

override var prefersStatusBarHidden: Bool {
    return self.isStatusBarHidden
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM