转载:https://www.jianshu.com/p/b24aebb4c12a
一、过去修改状态栏样式是通过添加 Info.plist 属性来修改:
1、在Info.plist
中设置 View controller-based status bar appearance
为 NO
2、在需要修改的控制器中
如果需要在全部View
中都改变样式,可以写在父类的相关方法中,或者写到AppDelegate.swift
中。
二、现在修改状态栏的样式可以使用以下方法,更加简便,不用配置Info.plist
属性:
但是如果控制器包装了一个
UINavigationController
,就会发现即使重写了preferredStatusBarStyle
属性,状态栏样式也没有做任何的改变。
这是需要重写
UINavigationController
的以下2个方法,来让系统调用当前控制器的preferredStatusBarStyle
属性。
如果应用的第一页面就需要修改状态栏样式,建议在
Deployment Info -> Status Bar Style
中预先设置好,以免开启应用时有过渡的效果。
三、关于动态修改状态栏
有时我们需要动态的修改状态栏是否隐藏 或者 更改状态栏样式。这时,可以自定义变量来记录状态。
例如:
⚠️ 当你present
一个VC
的时候,被present
的VC
的preferredStatusBarStyle
不会工作,你必须在present
前设置: