动画 UIStatusBar ios9+ (swift)

Animate UIStatusBar ios9+ (swift)

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

考虑到导航栏存在一个方法,我认为确实有一种方法可以处理此问题,我找到了方法 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 属性.

的值给出