iOS状态栏的设置

关于“UIViewControllerBasedStatusBarAppearance”

UIViewControllerBasedStatusBarAppearance指定状态栏的外观是否基于视图控制器。
当其被指定为NO时,preferredStatusBarStyle失效,UIApplication的setStatusBarStyle生效
当它没有被设置或者设置成YES时,preferredStatusBarStyle生效,UIApplication的setStatusBarStyle失效。

iOS7之后可以通过UIApplication的setStatusBarStyle方法全局更改状态栏的style,但是iOS 9已经废弃该方法,推荐采用在视图控制器中重载preferredStatusBarStyle属性设置当前控制器中状态栏style。

1、处于容器类中的视图控制器状态栏的设置

处在容器类中的视图控制器不会执行preferredStatusBarStyle方法,需要在容器类中重载preferredStatusBarStyle方法才有效
另外在容器类中如果想做到第一个页面状态栏为白色,第二个页面状态栏为黑色,这时需要在容器类中重载另一个属性childViewControllerForStatusBarStyle,如果这个属性返回值非nil,状态栏的样式由返回视图控制器决定,如果这个属性返回值为nil,由容器类自己决定。

2、present出来的视图控制器中状态栏style的设置

present出来的视图控制器preferredStatusBarStyle属性会失效
需要在present之前设置modalPresentationCapturesStatusBarAppearance属性为YES。

参考链接额:
https://www.jianshu.com/p/0d4337b2e18a

你可能感兴趣的:(iOS状态栏的设置)