hidesBarsOnTap - 导航栏 hidden/displayed 事件?

hidesBarsOnTap - Navigation Bar hidden/displayed event?

我想在导航栏隐藏时将视图的背景颜色设置为黑色,在导航栏显示时设置为白色。

属性hidesBarsOnTapviewDidLoad中设置为true。这很好用:

navigationController?.hidesBarsOnTap = true

如何在隐藏和显示栏时通知我?

对不起,我弄错了。以下代码完全符合您的要求。如果您有工具栏,您也可以将其设置为隐藏。

class ViewController: UIViewController {

    var hidden = false {
        didSet {
            if let nav = navigationController {
                nav.setNavigationBarHidden(hidden, animated: true)
                nav.setToolbarHidden(hidden, animated: true)

                view.backgroundColor = hidden ? UIColor.blackColor() : UIColor.whiteColor()
            }
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        let recognizer = UITapGestureRecognizer(target: self, action: "tap:")
        view.addGestureRecognizer(recognizer)
    }

    func tap(recognizer: UITapGestureRecognizer) {
        if recognizer.state == .Ended {
            hidden = !hidden
        }
    }
}

由于 hidesBarsOnTap 是布尔类型,我们可以很容易地使用它来检查并将其用作选项,如下例所示:

var set : Bool = navigationController?.hidesBarsOnTap //true or false

    if (set){
        //do what you want when set
    }else{
    //do what you want when it is not set
    }