ios 去掉底部状态栏_iOS状态栏隐藏及显示问题终极解决方案

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

方案总结

在Info.plist 加 Status bar is initially hidden

在Info.plist 加 View 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后已经不推荐使用。

操作方式

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

启动界面的状态栏隐藏及显示(没有添加默认是 显示)

Status bar is initially hidden YES隐藏 NO显示

App界面状态栏隐藏及显示(没有添加默认是显示)

View controller-based status bar appearance 的设置必须在 Status bar is initially hidden 为YES

YES显示 NO隐藏

在当个界面对状态栏隐藏及显示(没有添加默认是 显示)

重写此方法,返回 YES隐藏 NO显示

- (BOOL)prefersStatusBarHidden {

return YES;

}

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

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

情况分类和Demo

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

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

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

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

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

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

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

在需要隐藏的控制器重写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 appearance 设YES(或者不加)

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

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

Demo

声明

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值