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

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

一、有关状态栏的隐藏



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


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


View controller-based status bar appearance

image.png


  • <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


image.png

  • <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 controllerstatus bar的设置优先级高于application的设置。
    NO则以application的设置为准,view controllerprefersStatusBarHidden以及preferredStatusBarStyle方法无效,是根本不会被调用的。


推荐博客iOS状态栏详解

目录
相关文章
|
3月前
|
小程序 前端开发 Android开发
解决小程序中textarea ios端样式不兼容的两种方法
解决小程序中textarea ios端样式不兼容的两种方法
|
5月前
|
JSON 小程序 Android开发
小程序列表左滑效果在IOS呈上下滑动影响样式
小程序列表左滑效果在IOS呈上下滑动影响样式
97 0
|
4月前
|
API 开发工具 iOS开发
在应用研发平台EMAS中,ios的推送有没有办法在app端设置在收到通知后是否展示的逻辑
在应用研发平台EMAS中,ios的推送有没有办法在app端设置在收到通知后是否展示的逻辑
32 1
|
12月前
|
iOS开发
iOS 15后设置导航控制器的导航条背景色无效的问题处理
iOS 15后设置导航控制器的导航条背景色无效的问题处理
367 0
|
7月前
|
缓存 iOS开发
iOS LaunchScreen.storyboard 启动页设置图片不显示
iOS LaunchScreen.storyboard 启动页设置图片不显示
132 0
|
10月前
|
小程序 API Android开发
小程序获取WIFI的API(IOS conncetWifi()自动跳转设置页)
小程序获取WIFI的API(IOS conncetWifi()自动跳转设置页)
257 0
|
存储 自然语言处理 API
iOS 多语言快捷设置Xib设置
iOS 多语言快捷设置Xib设置
iOS 多语言快捷设置Xib设置
iOS--设置系统导航栏右上角按钮不显示问题
iOS--设置系统导航栏右上角按钮不显示问题
196 0
|
iOS开发
iOS开发 - 设置阴影之你不知道的秘密
iOS开发 - 设置阴影之你不知道的秘密
334 0