在默认情况下,APP的状态栏和进入后的启动页状态栏都是黑色,但由于业务需求有时会需要改变状态栏的颜色,在此总结一下比较常用的几种情况
一、没有包装导航控制器
-
所有页面皆为白色
1.第一种方式
在项目的** Info.plist **文件里增加一项 View controller-based status bar appearance = NO,如下图:
其中的** Status bar style **项可在项目的General中设置,也可自己修改
完成以上的修改后,项目的状态栏就变为了白色
2.第二种方式
在根控制器里添加如下代码(我这里以tabBarController为例):
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
- (UIViewController *)childViewControllerForStatusBarStyle {
return self.tabBarController;
}
所有tabBar的子控制器状态栏都变为了白色
-
某个页面为白色
在需要变白的控制器里添加如下代码:
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
</br>
二、包装了导航控制器
-
所有页面皆为白色
如果也有tabBarController的话,上面的第二种方式同样适用。
其他方式:
a. 同没包装导航控制器的第一种方式一样,设置好下图中的两项即可。
b. 同样需要设置好 View controller-based status bar appearance = NO ,然后在
AppDelegate.m
里输入[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
同样可以使状态栏变白。
-
某个页面为白色
在导航控制器.m文件中输入以下代码:
- (UIViewController *)childViewControllerForStatusBarStyle{
return self.topViewController;
}
然后在需要变白的控制器.m里去输入以下代码:
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
完成这两步操作后即可实现,效果如下:
最后
并非只有以上的方法才能实现状态栏变白的效果,此处只介绍了我自己在实际中用到的一些方法。
网友评论