美文网首页
iOS状态栏显示问题汇总

iOS状态栏显示问题汇总

作者: HaloMartin | 来源:发表于2017-08-24 15:22 被阅读0次

问题

实际开发中,经常需要隐藏状态栏,或者修改状态栏的颜色,资料较分散,而且同样的方法,有时候有效,有时候则无效

解决

statusBar有两种字体颜色:

  • 默认的黑色(UIStatusBarStyleDefault)
  • 白色(UIStatusBarStyleLightContent)

可以在两个地方设置statusBar的字体颜色,也称为前景色,包括网络标识,时间和电量指示的颜色。

  1. plist设置
    plist里可以设置app启动时launch页显示的状态栏颜色,在plist里增加一行 UIStatusBarStyle(或者是“Status bar style”也可以),这里可以设置两个值,就是上面提到那两个:UIStatusBarStyleDefaultUIStatusBarStyleLightContent
    Project->General->Deployment Info中设置
    Default对应UIStatusBarStyleDefault,表示深色,用于亮色的背景中;Light对应UIStatusBarStyleLightContent,表示亮色,用于深色的背景中。也可以在info中添加
    Project->Info->Custom iOS Target Properties中添加

其中Gray style(default)对应的就是UIStatusBarStyleDefault,Transparent black style (alpha of 0.5)和Opaque black style这两个呈现的效果都是白色,输入字符串‘UIStatusBarStyleLightContent’的效果也是白色

  1. 代码设置
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

或者

//相对于上面的接口,这个接口可以动画的改变statusBar的前景色  
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];

该方法已经在iOS 9中被移除,苹果推荐的替代方法是覆盖实现-(UIStatusBarStyle)preferredStatusBarStyle,返回值可以是上面的那两个,根据要求自行选择。
可以参考[iOS]关于状态栏(UIStatusBar)的若干问题

后续问题

在一些环境中,可能还会遇到 preferredStatusBarStyle不执行 的情况,这是因为在ViewController中加入了UINavigationController使得导航控制器不会将preferredStatusBarStyle这个方法的调用转给它的子视图,而是由导航控制器本身进行管理,也就是说,如果你使用了UINavigationController,且navigationBar没有被隐藏的话,它的rootController及之后push的viewController的preferredStatusBarStyle都不会被调用。
假如你想用调用preferredStatusBarStyle修改的话,可以隐藏导航栏(navigationController.navigationBarHidden = YES)或设置navigationBarStyle从Default->Black,即

/** 将状态栏文本颜色设置为白色 */
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
/** 将状态栏文本颜色设置为黑色 ,默认就是黑色 */
self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

可以参考关于使用preferredStatusBarStyle修改状态栏颜色无效的原因以及解决方法

相关文章

  • iOS状态栏显示问题汇总

    问题 实际开发中,经常需要隐藏状态栏,或者修改状态栏的颜色,资料较分散,而且同样的方法,有时候有效,有时候则无效 ...

  • iOS 状态栏的总结

    【iOS 开发】Status Bar 状态栏设置汇总 状态栏 个人觉得 iOS 的 Status Bar 状态栏也...

  • iOS 状态栏的隐藏显示与状态栏样式的设置

    iOS 状态栏的隐藏显示与状态栏样式的设置 iOS 状态栏的隐藏显示与状态栏样式的设置

  • 关于导航栏和状态栏

    两篇文章了解 iOS状态栏使用总结【iOS 开发】Status Bar 状态栏设置汇总 补充:当导航栏设为透明的时...

  • iOS 11 问题

    iOS 11 状态栏问题 iOS 11 tittleView问题

  • 【iOS 开发】Status Bar 状态栏设置汇总 【转】

    【版权转自】- 【iOS 开发】Status Bar 状态栏设置汇总[http://www.cocoachina....

  • ios状态栏UIStatusBar设置

    状态栏就是显示运营商、时间、电量、WiFi的那块 隐藏和显示状态栏 一、隐藏状态栏 iOS8以上的适配: 当然如果...

  • iOS状态栏的相关设置

    iOS状态栏的相关设置 一:状态栏的隐藏和显示(全局设置) 1...

  • 工作笔记六

    react-native ios和android的兼容性问题: IOS的顶部状态栏(显示手机电池的顶部菜单栏)默认...

  • 2018-04-09

    原文:IOS状态栏和导航栏的控制问题 IOS的项目多数会遇到控制状态栏和导航栏的问题,比如隐藏状态栏、控制状态栏的...

网友评论

      本文标题:iOS状态栏显示问题汇总

      本文链接:https://www.haomeiwen.com/subject/lfqedxtx.html