在iOS开发的过程中经常会遇到修改状态栏样式的情况,这是一个很小也很简单的知识点,但是也有一些需要注意的地方,下面会讲解我在开发的过程中是如何设置状态栏样式的.
1.什么是状态栏
什么是状态栏就不多做说明了,状态栏分为前景部分和背景部分.前景部分指的是显示电池,时间,信号这些.背景部分指的是显示黑色或者图片背景的部分
2.设置状态栏的前景和背景
在实际开发中设置状态栏风格无非有两种,第一,整个项目中使用同一种样式,第二,有部分界面展示不同的风格.
针对第一种情况直接在info.plist文件中加入以下代码就完事了,不多做解释,毕竟还是很简单
这里是设置为白色.
针对第二种情况我们通过代码来设置,要想代码设置生效,必须在plist里面设置了View controller-based status bar appearance为YES,没有设置时默认为YES.这个时候可以通过
- (UIStatusBarStyle)preferredStatusBarStyle方法来设置状态栏风格.
在这种情况下又可以分为两种情况.第一,没有导航控制器.第二,当前展示的控制器是导航控制器的根控制器.
第一种没有导航控制器的情况
直接在控制器中重写
- (UIStatusBarStyle)preferredStatusBarStyle方法就OK了
第二种情况
当前要设置的viewcontroller是导航控制器的根控制器的时候,系统默认将指定状态栏风格的权利交给了导航控制器,这时候要改变状态栏风格最好自定义导航控制器,在自定义的导航控制器中重写下列方法中的一个,都可以实现
- (UIStatusBarStyle)preferredStatusBarStyle
{
UIViewController*vc = self.topViewController;
return [vc preferredStatusBarStyle];
}
- (UIViewController *)childViewControllerForStatusBarStyle
{
return self.topViewController;
}
然后在当前控制器中实现
- (UIStatusBarStyle)preferredStatusBarStyle;方法即可
https://github.com/geekGetup/StatusStyleDemo
是demo的链接地址.写的很乱,有错误的地方请大神指点.
网友评论