一、认识状态栏
iOS上的状态栏就是指屏幕最上方20个像素的部分,首先咱们要分清楚两个概念:
- 前景部分:电池、WiFi、时间显示的部分
- 后景部分:前景部分后的背景颜色或者是图片
设置UIStatusBar,实际上就是设置前景部分(时间、电池、网络状态等)的颜色。iOS7之后,只有两种颜色状态可选:
- 默认的黑色(UIStatusBarStyleDefault)
- 白色(UIStatusBarStyleLightContent)
二、设置状态栏
设置状态栏方式有多种
1.在plist文件中设置
2.在代码中设置
在iOS9系统之前,我们可以通过
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
或者
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
设置状态栏的前景颜色,在iOS9之后改方法已经弃用,设置后并没有效果。
当前苹果推荐使用的方法是[UIViewController prefersStatusBarHidden]
,即在相应的UIViewController中采用方法
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
进行对界面的状态栏设置。并且经过我在xcode8.0上测试,在iOS9及以后没有设置UIStatusBarStyle的界面状态栏会默认为黑色。这时候可能有的小伙伴会问,那每个界面都设置多麻烦呀。额额,难道你的程序没有公共基类嘛?其实只要在BaseViewController里面设置你的app状态栏要显示的颜色就可以了,而且我个人认为这个方法非常好用。比如在你的app中,绝大部分界面状态栏是要显示 UIStatusBarStyleLightContent
,可能某个界面要显示为 UIStatusBarStyleDefault
,你只需要在要显示的界面重新设置
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleDefault;
}
就可以了,返回到上个界面,你也无需担心不需要再重新设置上个界面的状态栏界面仍然会是白色前景的状态栏。