在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 设
NO
Demo
启动界面隐藏状态栏 + 界面自定义状态栏的显示和隐藏
在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,转载注明出处即可。
网友评论