【问题标题】:Hide Status Bar during a Custom UIViewController Transition在自定义 UIViewController 转换期间隐藏状态栏
【发布时间】:2016-09-04 06:56:51
【问题描述】:

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

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

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

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

过渡由用户控制,因为我使用手势控制器实现了拉动打开过渡。

目标:我希望在外观过渡AND消失过渡期间隐藏状态栏(本质上类似于 Google 地图滑出菜单)。

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

【问题讨论】:

    标签: ios swift transitions uistatusbar


    【解决方案1】:

    您可以创建一个实例变量来保持状态栏隐藏状态并从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
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 当我在 viewWillAppearviewWillDisappear 中使用覆盖 func prefersStatusBarHidden() -> Bool { return shouldHideStatusBar } 并设置 shouldHideStatusBar = true; self.setNeedsStatusBarAppearanceUpdate(); 时,它无法帮助我控制状态栏的外观 在过渡期间(Info.plist 设置为基于视图控制器的状态栏外观 = YES)。
      猜你喜欢
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 2016-08-11
      • 2016-05-18
      • 1970-01-01
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多