看到很多文章讲解设置状态栏的时候,直接丢设置状态栏的API方法,而没有考虑到info.plist中的项目对这些设置状态栏代码的影响。
如果没有考虑到这个,有的情况这些的代码根本是无用功,因为从来就不执行。
- info.plist文件中有个一项:
View controller-based status bar appearance
:
当这里的值分别为:
- 为
YES
,则以ViewController的设置为准,即通过preferredStatusBarStyle
来设置状态栏。而ViewController对status bar的设置优先级高于application的设置。 - 为
NO
,则以application的设置为准,即通过setStatusBarStyle:
来设置状态栏。而ViewController的preferredStatusBarStyle
方法无效,是根本不会被调用的。
注意点
- 调用
[[UIApplicationsharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];
需要先在info.plist设置View controller-based status bar appearance
项设为No
。 - 不设置默认YES,即View controller对status bar的设置优先级高于application的设置。
网友评论