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

栏目: IOS · 发布时间: 5年前

内容简介:一、有关状态栏的隐藏1.1、方式一:提示:控制器之间的状态栏不会相互影响 (下面是 iOS9 之后的设置,不支持 iOS 9以前设备)<1>、在info.plist里面添加下面代码为YES

一、有关状态栏的隐藏

1.1、方式一:提示:控制器之间的状态栏不会相互影响 (下面是 iOS9 之后的设置,不支持 iOS 9以前设备)

<1>、在info.plist里面添加下面代码为YES

View controller-based status bar appearance

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

View controller-based status bar appearance 设置为YES

<2>、在控制器里面定义一个属性

@property(nonatomic,assign) BOOL statusHiden;

<3>、重写状态栏的一个方法

- (BOOL)prefersStatusBarHidden{

     return self.statusHiden;
 }

<4>、改变状态栏的隐藏与显示

  • 隐藏状态栏

self.statusHiden = YES;
// 刷新状态栏
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
  • 显示状态栏

self.statusHiden = NO;
// 刷新状态栏
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];

1.2、方式二:iOS 9 之前以及iOS9 之后都支持 的你可以如下设置,提示:控制器之间的状态栏是会 相互影响

<1>、在info.plist里面添加下面代码为NO

View controller-based status bar appearance

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

View controller-based status bar appearance 设置为NO

<2>、在控制器里面改变状态栏的显示与隐藏

  • 隐藏状态栏

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
  • 显示状态栏

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

1.3、对比优缺点:

方式一:

  • 优点:各自控制器之间互不影响

  • 缺点:不支持 iOS9之前的设备

方式二:

  • 优点:支持 所有的设备

  • 缺点:各自控制器之间相互影响

总结:如果你的设备最低支持iOS9,那就选择方式一就好

二、有关状态栏样式设置

2.1、状态栏样式

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;

2.2、方式一:提示:控制器之间的状态栏不会相互影响 (下面是 iOS9 之后的设置,不支持 iOS 9 以前设备)

<1>、在info.plist里面添加下面代码为YES

View controller-based status bar appearance

<2>、在控制器里面定义一个属性

@property(nonatomic,assign) NSInteger barStyle;

<3>、重写状态栏样式的一个方法

// 状态栏的样式
- (UIStatusBarStyle)preferredStatusBarStyle{
     return self.barStyle;
}

<4>、改变状态栏的隐藏与显示

  • 状态栏黑色样式

self.barStyle = UIStatusBarStyleDefault;
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
  • 状态栏白色样式

self.barStyle = UIStatusBarStyleLightContent;
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];

2.3、方式二:iOS 9 之前以及iOS9 之后都支持 的你可以如下设置,提示:控制器之间的状态栏是会 相互影响

<1>、在info.plist里面添加下面代码为NO

View controller-based status bar appearance

<2>、在控制器里面改变状态栏的显示与隐藏

  • 状态栏黑色样式

[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleDefault];
  • 状态栏白色样式

[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];

1.3、对比优缺点:

方式一:

  • 优点:各自控制器之间互不影响

  • 缺点:不支持 iOS9之前的设备

方式二:

  • 优点:支持 所有的设备

  • 缺点:各自控制器之间相互影响

总结:如果你的设备最低支持iOS9,那就选择方式一就好

三、提示

  • 3.1、info.plist文件中,View controller-based status bar appearance项设为YES,则View controller对status bar的设置优先级高于application的设置。

    为NO则以application的设置为准,view controller的prefersStatusBarHidden以及preferredStatusBarStyle方法无效,是根本不会被调用的。

  • 3.2、 上面测试的demo

推荐博客 iOS状态栏详解

作者:IIronMan

链接:https://www.jianshu.com/p/a9f3547e986f


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Two Scoops of Django

Two Scoops of Django

Daniel Greenfeld、Audrey M. Roy / CreateSpace Independent Publishing Platform / 2013-4-16 / USD 29.95

Two Scoops of Django: Best Practices For Django 1.5 is chock-full of material that will help you with your Django projects. We'll introduce you to various tips, tricks, patterns, code snippets, and......一起来看看 《Two Scoops of Django》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具