一.什么是状态栏
iOS7状态栏就是指的最上面的20像素高的部分
状态栏分前后两部分,分别是:
· 前景部分: 就是指的显示电池、时间等部分
· 背景部分: 就是显示黑色或者图片的背景部分
二.修改状态栏的前景部分的颜色
1.状态栏可以设置成两种颜色:
typedef NS_ENUM(NSInteger, UIStatusBarStyle) {
UIStatusBarStyleDefault = 0, // Dark content, for use on light backgrounds
UIStatusBarStyleLightContent NS_ENUM_AVAILABLE_IOS(7_0) = 1, // Light content, for use on dark backgrounds
UIStatusBarStyleBlackTranslucent NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 1,
UIStatusBarStyleBlackOpaque NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 2,
} __TVOS_PROHIBITED;
UIStatusBarStyleDefault 默认颜色,黑色
UIStatusBarStyleLightContent 白色
2.修改颜色有两种方法:
①.在项目中的Info.plist中添加一个属性 Key值是View controller-based status bar appearance Type是Boolean Value值是NO .有人说这样不方便,我教大家一种好的办法:在Info.plist上右击,以源代码方式打开.如下图:
之后再<key>之前加入以下代码:
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
在要改变状态栏颜色的UIViewController中添加以下代码:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
或者:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
就可以了
②.在Info.plist中将View controller-based status bar appearance设置成YES,或者不设置,因为它默认为YES.
在要改变状态栏颜色的UIViewController中添加以下方法:
- (UIStatusBarStyle)preferredStatusBarStyle;
注意:如果将它设置成NO时,上面的步骤将不起作用
三.总结:
1、若是在控制器覆写了-(UIStatusBarStyle)preferredStatusBarStyle方法,却发现没有作用,查看是否Info.plist文件中将View controller-based status bar appearance设置为NO了
2、当ViewController在UINavigationController中时,如果导航栏存在,则以UINavigationController中-(UIStatusBarStyle)preferredStatusBarStyle返回风格为标准;如果导航栏隐藏了,则以控制器中返回的风格为标准
3、在iOS8中,UIStatusBarStyleBlackTranslucent与UIStatusBarStyleBlackOpaque相当于UIStatusBarStyleLightContent