状态栏的隐藏主要有两种方法: 方法一:通过代码控制 @interface UIApplication(UIApplicationDeprecated) // Setting statusBarHi
2017-12-12 10:46
477 查看
状态栏的隐藏主要有两种方法:
方法一:通过代码控制
在
注意:添加的View controller-based status bar appearance是Bool类型,默认为Yes
很不幸iOS9之后苹果已经不推荐使用这些方法了,这些方法能用但是会报警告。
那么这些方法被禁用以后,如何操作呢?注释里已经提示
方法二:通过
1,首先我们依然要设置这个(第2步中的两种方式都要设置这个参数)
2,然后设置(两种方式)
或者
两者是等效的!并且两者的状态是同步的。
这里链一篇关于这个问题的博客:UINavigationController和View Controller-based状态栏风格
除了以上博客中的方法外,系统也给我们提供了一个函数
作者:MajorLMJ
链接:http://www.jianshu.com/p/4196d7cf95f4
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
方法一:通过代码控制
@interface UIApplication(UIApplicationDeprecated) // Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system. @property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController prefersStatusBarHidden]") __TVOS_PROHIBITED; - (void)setStatusBarHidden:(BOOL)hidden animated:(BOOL)animated NS_DEPRECATED_IOS(2_0, 3_2) __TVOS_PROHIBITED; // use -setStatusBarHidden:withAnimation: - (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_DEPRECATED_IOS(3_2, 9_0, "Use -[UIViewController prefersStatusBarHidden]") __TVOS_PROHIBITED;注意:让我们先来看看
// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.这个注释提示,苹果提示开发者如果使用的是系统基础的状态栏样式你的这些设置是不生效的,在接下来要介绍的通过
Info.plist隐藏状态栏同样要注意这件事。
在
Info.plist中添加一个
View controller-based status bar appearance设置选项,设置为
NO这样就可以使用上边的方法了
注意:添加的View controller-based status bar appearance是Bool类型,默认为Yes
很不幸iOS9之后苹果已经不推荐使用这些方法了,这些方法能用但是会报警告。
那么这些方法被禁用以后,如何操作呢?注释里已经提示
Use -[UIViewController prefersStatusBarHidden]这是iOS7之后苹果在
UIViewController里添加的新方法,这么做的目的可以让开发者更加灵活的自定义每个
ViewController的状态栏。
- (BOOL)prefersStatusBarHidden{ return YES; }iOS7之后
UIViewController中不只提供了这个关于状态栏的设置的函数,还有其他的,后面详细说。
方法二:通过
Info.plist控制
1,首先我们依然要设置这个(第2步中的两种方式都要设置这个参数)
2,然后设置(两种方式)
或者
两者是等效的!并且两者的状态是同步的。
状态栏样式
先看看都有哪些样式(解释看注释)typedef NS_ENUM(NSInteger, UIStatusBarStyle) { //默认样式,黑字透明状态栏,适合用于背景色为亮色的页面 UIStatusBarStyleDefault = 0, // Dark content, for use on light backgrounds //白字透明状态栏,适合用于背景色为暗色的页面 UIStatusBarStyleLightContent NS_ENUM_AVAILABLE_IOS(7_0) = 1, // Light content, for use on dark backgrounds // iOS7.0以前黑底白字,iOS7以后跟UIStatusBarStyleLightContent效果一样 UIStatusBarStyleBlackTranslucent NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 1, // iOS7.0以前启动页为灰底白字,iOS7以后跟UIStatusBarStyleLightContent效果一样 UIStatusBarStyleBlackOpaque NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 2, } __TVOS_PROHIBITED;如何设置状态栏样式
// Setting the statusBarStyle does nothing if your application is using the default UIViewController-based status bar system. @property(readwrite, nonatomic) UIStatusBarStyle statusBarStyle NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController preferredStatusBarStyle]") __TVOS_ 9cc5 PROHIBITED; - (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle animated:(BOOL)animated NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController preferredStatusBarStyle]") __TVOS_PROHIBITED;同样iOS9以后这些方法被禁用了,苹果推荐在具体的
viewController中
Use -[UIViewController preferredStatusBarStyle]
- (UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent; }注意:我们通常使用的
viewController都是嵌套在
UINavigationController中使用的,此时在
viewController中使用
- (UIStatusBarStyle)preferredStatusBarStyle;函数会发现设置并没有生效。
这里链一篇关于这个问题的博客:UINavigationController和View Controller-based状态栏风格
除了以上博客中的方法外,系统也给我们提供了一个函数
- (UIViewController *)childViewControllerForStatusBarStyle,也可以解决这个问题,后面会讲。
作者:MajorLMJ
链接:http://www.jianshu.com/p/4196d7cf95f4
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章推荐
- javascript控制页面控件隐藏显示的两种方法
- javascript控制页面控件隐藏显示的两种方法
- Android 通过代码设置radiobutton不同方位图标的两种方法
- js控制页面控件隐藏显示的两种方法介绍
- 两种方法一句代码隐藏Activity的标题栏
- 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结
- java通过代码控制线程状态,解决线程不安全的问题。
- javascript控制页面控件隐藏显示的两种方法
- 《疯狂安卓讲义》P191 -- 通过代码来控制ActionBar的显示、隐藏
- javascript控制页面控件隐藏显示的两种方法
- js控制容器隐藏出现防止样式变化的两种方法
- javascript控制页面控件隐藏显示的两种方法
- 通过代码设置radiobutton不同方位图标的两种方法
- JS控制HTML元素的显示和隐藏的两种方法
- javascript控制页面控件隐藏显示的两种方法
- javascript控制页面控件隐藏显示的两种方法
- 微信小程序弹出loading层的两种方法:直接在代码里控制,在wxml文件里布局弹窗loading层,利用条件渲染,在js代码里控制是否显示loading层。
- javascript控制页面控件隐藏显示的两种方法
- javascript控制页面控件隐藏显示的两种方法
- 控制页面控件隐藏显示的两种方法