在自定义UIViewController过渡期间隐藏状态栏

时间:2016-05-09 15:05:58

标签: ios swift transitions uistatusbar

后台:我实现了自定义UIViewController转换,其中第一个视图控制器(VC1)具有可见状态栏

override func prefersStatusBarHidden() -> Bool {
    return false
}

而第二个呈现的视图控制器(VC2)有一个隐藏状态栏:

override func prefersStatusBarHidden() -> Bool {
    return true
}

转换由用户控制,因为我使用手势控制器实现了拉开式转换。

目标:我希望状态栏在外观转换 AND 消失过渡期间隐藏(基本上类似于Google地图幻灯片菜单)。

问题:在ViewController VC2的整个外观转换过程中,状态栏被正确隐藏。但在整个消失过渡期间,状态栏是可见的。有关如何为iOS 9正确实现此功能的任何建议吗?

2 个答案:

答案 0 :(得分:0)

尝试设置隐藏在viewWillAppear和viewWillDisappear函数上的状态栏。

答案 1 :(得分:0)

您可以创建一个实例var来保存状态栏隐藏状态,并从prefersStatusBarHidden()返回此布尔值。当此值更改时,请致电setNeedsStatusBarAppearanceUpdate()

例如:

var statusBarHidden = true {
    didSet {
        if oldValue != statusBarHidden {
            setNeedsStatusBarAppearanceUpdate()
        }
    }
}

override var prefersStatusBarHidden: Bool {
    return statusBarHidden
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    statusBarHidden = false
}