iOS 动态修改状态栏风格
App 中经常需要根据页面的风格改变电池栏文字的颜色,记录一下都是如何调整的。
- UIStatusBarStyle 的样式
- 改变状态栏文字颜色的方式
- 状态栏的显示和隐藏
UIStatusBarStyle 的样式
iOS 13.0 中新增了暗黑模式,对应的状态栏风格也增加了一个 darkContent
。
1 | public enum UIStatusBarStyle : Int { |
改变状态栏文字的颜色
是否可以在不同页面设置不同的风格,首先要配置好 Info.plist
中的
1 | View controller-based status bar appearance |
属性,默认为 YES
。
- 如果整个应用只需要使用固定的风格,上述属性改为
NO
。在应用配置或者代码中设定好风格即可。 - 如果状态栏颜色需要视页面而定,上述属性改为
YES
,并且重写控制器的preferredStatusBarStyle
方法。
对于需要调整 ViewController
风格的页面,我们重写它的 getter,这是一个 只读 的属性。
1 | override var preferredStatusBarStyle: UIStatusBarStyle { |
当然如果导航控制器重写了这个方法,它的子控制器都会以 导航控制器 的为准。如果子控制器中有需要改变风格的,同样也需要自己实现这个方法。
状态栏的显示和隐藏
- 全局隐藏的话,很简单,直接改配置。
- 部分页面隐藏,同上,重写~~
1 | override var prefersStatusBarHidden: Bool { |