由于IOS9已弃用UIApplication.shared.setStatusBarStyle(.default, animated: true)
,因此可以在push
上使用动画更改状态栏样式吗?我在文档中找不到任何描述。
答案 0 :(得分:9)
现在它是一个必须覆盖的变量:
override var preferredStatusBarStyle: UIStatusBarStyle
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation
根据您更新状态栏的时间,您可能还需要致电setNeedsStatusBarAppearanceUpdate()
答案 1 :(得分:3)
如果要设置状态栏样式,应用程序级别,请在UIViewControllerBasedStatusBarAppearance
文件中将NO
设置为.plist
。
如果您要在视图控制器级别设置状态栏样式,请按照以下步骤操作:
UIViewControllerBasedStatusBarAppearance
文件中将YES
设置为.plist
。 在viewDidLoad添加功能 - setNeedsStatusBarAppearanceUpdate
覆盖视图控制器中的preferredStatusBarStyle。
-
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
答案 2 :(得分:0)
要解决动画问题的方法是使我在.lightContent
和.default
之间平滑过渡,那就是每次更改动画时都使用类似于下面的内容。
UIView.animate(withDuration: 0.2) {
self.setNeedsStatusBarAppearanceUpdate()
}
将其放置在VC中,以使状态栏具有动画效果,您将获得一个流畅的动画。
override var preferredStatusBarStyle: UIStatusBarStyle {
return lightStatusBar ? .lightContent : .default
}
上面是我根据自己所处的条件更改内容的摘要。