iOS状态栏颜色更改动画

iOS状态栏颜色更改动画,ios,swift,statusbar,Ios,Swift,Statusbar,我使用以下代码更改我的ViewController中的状态栏颜色: override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) UIApplication.shared.statusBarStyle = .lightContent } override func viewWillDisappear(_ animated: Bool) { super.viewWillDis

我使用以下代码更改我的
ViewController
中的状态栏颜色:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    UIApplication.shared.statusBarStyle = .lightContent
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    UIApplication.shared.statusBarStyle = UIStatusBarStyle.default
}
并且
info.plist
中的参数
查看基于控制器的状态栏外观
设置为否

但问题是状态栏的颜色在没有动画的情况下从黑色变为白色,我想在这些状态之间进行平滑过渡。有什么想法吗


Xcode 10 Beta 5,iOS 12 Dev Beta 6

您可以为一个VC设置以下内容

 override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
然后设置另一个,如下所示

override var preferredStatusBarStyle: UIStatusBarStyle {
        return UIStatusBarStyle.default
    }

您可以为一个VC设置以下内容

 override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
然后设置另一个,如下所示

override var preferredStatusBarStyle: UIStatusBarStyle {
        return UIStatusBarStyle.default
    }
您可以尝试以下方法:

override var preferredStatusBarStyle: UIStatusBarStyle
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation
每当您希望进行此转换时,需要调用
setNeedsStatusBarAppearanceUpdate()
(大部分在视图中将出现)

您可以尝试以下操作:

override var preferredStatusBarStyle: UIStatusBarStyle
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation

每当您希望进行此转换时(主要是在视图中将出现),都需要调用
setNeedsStatusBarAppearanceUpdate()

为什么不试试propertyAnimator呢。我认为这对您很有用。我认为您必须使用
查看基于控制器的状态栏外观=YES
才能使用动画,因为
UIApplication.shared.setStatusBarStyle
已被弃用。也许可以尝试将其包装在动画块中并检查?对于propertyAnimator,请遵循以下步骤,为什么不尝试propertyAnimator。我认为这对您很有用。我认为您必须使用
查看基于控制器的状态栏外观=YES
才能使用动画,因为
UIApplication.shared.setStatusBarStyle
已被弃用。也许可以尝试将其包装在动画块中并检查?对于propertyAnimator,请遵循此操作是的,我用您的代码替换了我的代码,并且状态栏开始随动画更改颜色,谢谢!是的,我用你的代码替换了我的代码,状态栏开始用动画改变颜色,谢谢!