iOS状态栏颜色 只有两种
状态栏的字体为黑色:UIStatusBarStyleDefault
状态栏的字体为白色:UIStatusBarStyleLightContent
很多产品都不可能只设计一种状态栏,一般导航栏不为白色就需要换成白色状态栏,达到界面美观,怎样灵活控制呢?
1、修改info.plist
在info.plist中,将 View controller-based status bar appearance 设为 NO. (系统默认为yes)
2、由于大部分push出来的页面都是用黑色的状态栏,在基类Baseviewvontroller中的统一设置
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
//状态栏 黑色
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
}
3. 有些叼专的页面要玩点小花样就陪它玩,在需要变的控制器里viewWillAppea方法实现;
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
//状态栏颜色
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
}
说点自己的想法,为什么这样操作就达到效果了。
由于所有创建的控制器继承于baseviewcontroller,都会先走baseviewcontroller 的 viewWillAppear ,达到不管什么操作出来的界面都是 统一设置的颜色;
单独修改怎么做到呢,在调用baseviewcontroller的 viewWillAppear后 再执行外层实现的viewWillAppear。
附上:info文件配置
推荐使用新版 设置状态栏方式 swift版本
-
info 配置
各自控制器之间互不影响
-
启动页状态栏设置
baseViewController 统一配置
override var preferredStatusBarStyle: UIStatusBarStyle {
return .darkContent
}
- 刷新状态栏
切换主题的时候需要用到,用于设置当前主题下展示的状态栏颜色
setNeedsStatusBarAppearanceUpdate()
- 特殊页面单独设置
重写preferredStatusBarStyle
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
*只限本人的想法,如果有什么不对的,或者更好的解决方案,希望不吝赐教