美文网首页人猿星球iOS技术栈iOS技术分享
iOS状态栏隐藏及显示问题终极解决方案

iOS状态栏隐藏及显示问题终极解决方案

作者: liangdahong | 来源:发表于2017-08-03 22:19 被阅读379次

在iOS开发中,我们难免可能会遇到操作状态栏的情况,最近抽点时间研究了下。其中包括:状态栏的隐藏及显示状态栏的颜色屏幕旋转时状态栏的适配

方案总结

  • Info.plistStatus bar is initially hidden

  • Info.plistView controller-based status bar appearance

  • 使用代码全局设置

@property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController prefersStatusBarHidden]") __TVOS_PROHIBITED;
  • 使用代码单独控制器设置
(BOOL)prefersStatusBarHidden NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; // Defaults to NO

感觉各种方法特别乱,有一些可能是历史原因,如:UIApplication 全局设置的方法在iOS 9后已经不推荐使用。

操作方式

这里暂把代码全局设置的方式忽略不计。

  1. 启动界面的状态栏隐藏及显示(没有添加默认是 显示)
    Status bar is initially hidden YES隐藏 NO显示

  2. App界面状态栏隐藏及显示(没有添加默认是显示)
    View controller-based status bar appearance 的设置必须在 Status bar is initially hiddenYES
    YES显示 NO隐藏

  3. 在当个界面对状态栏隐藏及显示(没有添加默认是 显示)
    重写此方法,返回 YES隐藏 NO显示

- (BOOL)prefersStatusBarHidden {
return YES;
}

必须保证View controller-based status bar appearance 置为YES的情况下

感觉好😓,果断把各种情况列出来一一揭破。

情况分类和Demo

启动界面显示状态栏 + 全部界面显示状态栏

不做任何操作,默认即可 Demo

启动界面显示状态栏 + 全部界面隐藏状态栏

在Info.plist 加 View controller-based status bar appearanceYES

全部控制器重写prefersStatusBarHidden 返回YES Demo

启动界面显示状态栏 + 界面自定义状态栏的显示和隐藏

在Info.plist 加 View controller-based status bar appearanceYES

在需要隐藏的控制器重写prefersStatusBarHidden 返回YES

在需要显示的控制器重写prefersStatusBarHidden 返回NO(或者不重写)Demo

启动界面隐藏状态栏 + 全部界面显示状态栏

在Info.plist 加 Status bar is initially hidden 设YES Demo

启动界面隐藏状态栏 + 全部界面隐藏状态栏

在Info.plist 加 Status bar is initially hidden 设YES

在Info.plist 加 View controller-based status bar appearance 设 NODemo

启动界面隐藏状态栏 + 界面自定义状态栏的显示和隐藏

在Info.plist 加 Status bar is initially hidden 设YES

在Info.plist 加 View controller-based status bar appearanceYES(或者不加)

在需要隐藏的控制器重写prefersStatusBarHidden 返回YES

在需要显示的控制器重写prefersStatusBarHidden 返回NO(或者不重写)
Demo

声明

感谢收看,有任何疑问和建议可在下方留言,欢迎GithubStar😁,本文发布于梁大红的技术Blog,转载注明出处即可。

相关文章

  • iOS状态栏隐藏及显示问题终极解决方案

    在iOS开发中,我们难免可能会遇到操作状态栏的情况,最近抽点时间研究了下。其中包括:状态栏的隐藏及显示,状态栏的颜...

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

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

  • ios状态栏UIStatusBar设置

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

  • iOS状态栏显示与隐藏

    在iOS 7.0及其以后版本中,iOS状态栏的显示和隐藏 还有状态栏的颜色修改方式如下: (1) 整个app隐藏 ...

  • iOS statusBar

    隐藏/显示statusBar(iOS 7.0+) 全局隐藏/显示状态栏在info.plist中添加View con...

  • iOS状态栏的相关设置

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

  • iOS开发-隐藏/显示状态栏

    iOS 7.0及其以后版本中,隐藏/显示状态栏方式: (1) 整个App始终隐藏状态栏: 在Info.plist中...

  • iOS-启动广告的状态栏显示与隐藏

    iOS7.0及之后需要整体控制状态栏的显示与隐藏,需要在Info.plist里面设置。View controlle...

  • 隐藏/显示状态栏

    iOS 7.0及其以后版本中,隐藏/显示状态栏方式: 1. 整个App始终隐藏状态栏: 在Info.plist中...

  • 2018-04-09

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

网友评论

本文标题:iOS状态栏隐藏及显示问题终极解决方案

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