prefersStatusBar隐藏幻灯片动画不能在设备上工作

prefersStatusBar隐藏幻灯片动画不能在设备上工作

问题描述:

我有两个视图控制器。 MainViewController和SecondViewController(这个嵌入在导航控制器中)。 MainViewController有一个UIButton,它将以模态方式呈现SecondViewController,而SecondViewController具有一个将关闭自身的UIButton。prefersStatusBar隐藏幻灯片动画不能在设备上工作

他们每个人有以下代码:

var statusBarHidden = false { 
    didSet { 
     UIView.animate(withDuration: 0.5) {() -> Void in 
      self.setNeedsStatusBarAppearanceUpdate() 
     } 
    } 
} 

override var prefersStatusBarHidden: Bool { 
    return statusBarHidden 
} 

override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation { 
    return .slide 
} 

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

    statusBarHidden = true 
} 

状态栏的幻灯片动画作品在模拟器伟大的,但不是实际的设备上,我究竟做错了什么?

我使用xCode 8.2.1和Swift 3

我最终做的是这样的。我创建了一个链接到状态栏视图并添加了功能的变量,以便我可以做我需要的。

extension UIApplication { 
    var statusBarView: UIView? { 
     return value(forKey: "statusBar") as? UIView 
    } 

    func changeStatusBar(alpha: CGFloat) { 
     statusBarView?.alpha = alpha 
    } 

    func hideStatusBar() { 
     UIView.animate(withDuration: 0.3) { 
      self.statusBarView?.alpha = 0 
     } 
    } 

    func showStatusBar() { 
     UIView.animate(withDuration: 0.3) { 
      self.statusBarView?.alpha = 1 
     } 
    } 
} 

一个典型的应用是:

func scrollViewDidScroll(_ scrollView: UIScrollView) { 

    let alpha = tableView.contentOffset.y/100 
    UIApplication.shared.changeStatusBar(alpha: alpha) 

}