我有两个视图控制器。 MainViewController和SecondViewController(这个嵌入在导航控制器中)。 MainViewController有一个UIButton,它将模态地呈现SecondViewController,而SecondViewController有一个UIButton,它将自行解散。
他们每个人都有以下代码:
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
答案 0 :(得分:0)
我最终做的是这个。我创建了一个链接到状态栏视图的变量,并添加了函数,以便我可以做我需要的。
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)
}