为UIStatusBar ios9+制作动画;(swift)

为UIStatusBar ios9+制作动画;(swift),ios,swift,uistatusbar,Ios,Swift,Uistatusbar,我正在尝试根据滚动视图的滚动方向设置状态栏的动画。目前,我可以隐藏状态栏,但是我无法更改动画 考虑到导航栏中存在一个方法,我认为有一个方法可以处理这个问题,我发现方法setStatusBarHidden(:with:),但是这个方法似乎自ios9以来就被弃用了 对,我正在动画块中设置状态并调用。setNeedsStatusBarAppearanceUpdate(),如下所示 DispatchQueue.main.async { UIView.animate(withDur

我正在尝试根据滚动视图的滚动方向设置状态栏的动画。目前,我可以隐藏状态栏,但是我无法更改动画

考虑到导航栏中存在一个方法,我认为有一个方法可以处理这个问题,我发现方法
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
属性的值

下面的代码段演示了顶级视图控制器如何通过动画切换状态栏可见性(为了演示目的,响应按钮的点击):


.fade
.slide
也是如此;这些将作为顶级视图控制器对
preferredStatusBarUpdateAnimation
属性的重写值提供。

感谢您的快速响应,我尝试了您的建议,在调用
setNeedsStatusBarAppearanceUpdate()
时,我仍然没有得到动画。没关系,我发现了问题。我在.plist文件中缺少“基于视图控制器的状态栏外观”=“是”。奇怪的是,您需要它,因为它是默认的。这段代码在没有它的情况下对我来说很好(在一个新的香草项目中)。请看,这可能会对您有所帮助:
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()
    }
}