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状态栏详解

目录
相关文章
|
JSON 小程序 Android开发
小程序列表左滑效果在IOS呈上下滑动影响样式
小程序列表左滑效果在IOS呈上下滑动影响样式
125 0
|
6月前
|
小程序 前端开发 Android开发
解决小程序中textarea ios端样式不兼容的两种方法
解决小程序中textarea ios端样式不兼容的两种方法
202 0
|
2月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
150 0
|
5月前
|
前端开发 iOS开发
input框设置placeholder属性在iOS中显示不完整
input框设置placeholder属性在iOS中显示不完整
72 1
|
6月前
|
安全 开发者 iOS开发
iOS16系统手机设置开启开发者模式才能安装ipa包
iOS16系统手机设置开启开发者模式才能安装ipa包
213 1
|
6月前
按钮的image图片是非圆角,直接对UIButton设置圆角,iOS13系统没有圆角效果的问题及解决方案
按钮的image图片是非圆角,直接对UIButton设置圆角,iOS13系统没有圆角效果的问题及解决方案
49 0
|
iOS开发
iOS 15后设置导航控制器的导航条背景色无效的问题处理
iOS 15后设置导航控制器的导航条背景色无效的问题处理
489 0
|
11月前
|
API 开发工具 iOS开发
在应用研发平台EMAS中,ios的推送有没有办法在app端设置在收到通知后是否展示的逻辑
在应用研发平台EMAS中,ios的推送有没有办法在app端设置在收到通知后是否展示的逻辑
70 1
|
缓存 iOS开发
iOS LaunchScreen.storyboard 启动页设置图片不显示
iOS LaunchScreen.storyboard 启动页设置图片不显示
282 0