我正在尝试根据滚动视图的滚动方向设置状态栏的动画。目前,我可以隐藏状态栏,但是我无法将更改设置为动画。
我认为有一个方法确实处理了这个,考虑到导航栏存在一个方法,我找到了方法setStatusBarHidden(_:with:)
,但是这个方法似乎从ios9开始就被弃用了。
我正在动画块中设置状态并调用.setNeedsStatusBarAppearanceUpdate()
,如下所示
DispatchQueue.main.async {
UIView.animate(withDuration: 0.3, delay: 0, options: UIViewAnimationOptions.curveEaseOut, animations: {
UIApplication.shared.isStatusBarHidden = true
self.setNeedsStatusBarAppearanceUpdate()
}, completion: { (completed) in
})
}
还有一件事,是否仍然可以设置动画风格?之前,使用setStatusBarHidden
方法,您可以选择几种不同的动画样式(淡入淡出和幻灯片)。
你在做什么永远是对的。您不应该与共享应用程序通信。它是顶级视图控制器,通过其prefersStatusBarHidden
属性的值来负责状态栏的可见性。
以下代码段演示了顶级视图控制器如何使用动画切换状态栏可见性(为了演示目的,响应按钮的响应):
var hide = false
override var prefersStatusBarHidden : Bool {
return self.hide
}
@IBAction func doButton(_ sender: Any) {
self.hide = !self.hide
UIView.animate(withDuration:0.4) {
self.setNeedsStatusBarAppearanceUpdate()
self.view.layoutIfNeeded()
}
}
.fade
和.slide
也是如此;这些将作为顶级视图控制器覆盖preferredStatusBarUpdateAnimation
属性的值给出。