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)
}