函数中的隐藏状态栏

Hidden Statusbar in a function

我想在隐藏导航栏和工具栏时隐藏状态栏。

如何让状态栏隐藏在 if NavigationBar.hidden == false && Toolbar.hidden == false{} 中?? 我不知道我该怎么做,我知道 return Statusbarhidden 的功能,但总的来说就是 ViewController,我想将它隐藏在功能中。

感谢您的帮助。

  func ImageTapGesture () {
    if NavigationBar.hidden == false && Toolbar.hidden == false{
        NavigationBar.hidden = true
        Toolbar.hidden = true

    } else if NavigationBar.hidden == true && Toolbar.hidden == true  {
        NavigationBar.hidden = false
        Toolbar.hidden = false

    }
}

一个 Swift 2.x 兼容的解决方法来完成您需要做的事情:

func hideStatusBar(yOffset:CGFloat) { // -20.0 for example
    let statusBarWindow = UIApplication.sharedApplication().valueForKey("statusBarWindow") as! UIWindow
    statusBarWindow.frame = CGRectMake(0, yOffset, statusBarWindow.frame.size.width, statusBarWindow.frame.size.height)
}

func showStatusBar() {
    let statusBarWindow = UIApplication.sharedApplication().valueForKey("statusBarWindow") as! UIWindow
    statusBarWindow.frame = CGRectMake(0, 0, statusBarWindow.frame.size.width, statusBarWindow.frame.size.height)
}

例如,要使用它,您可以启动:

hideStatusBar(-20.0)

Swift语言下,可以参考下面隐藏的代码,不需要动画效果的可以注释掉。

    var isHidden:Bool = false

    @IBAction func clicked(_ sender: AnyObject) {
        isHidden = !isHidden
        UIView.animate(withDuration: 0.5, animations: { () -> Void in
            self.setNeedsStatusBarAppearanceUpdate()
        }) 
    }
    override var preferredStatusBarUpdateAnimation : UIStatusBarAnimation {
        return UIStatusBarAnimation.slide
    }
    override var prefersStatusBarHidden : Bool {
        return isHidden
    }

也可以参考下面link的Demo,是我一次写的项目需求。

Github:https://github.com/ReverseScale/HiddenStatusBar

希望能帮到你。