【转】iOS控件 — 状态栏 Status Bar

转载链接:https://www.jianshu.com/p/32d0048ff2bb

一、样式

1. StatusBar有两种样式: (默认高度为20)

UIStatusBarStyleDefault :

UIStatusBarStyleDefault.png

UIStatusBarStyleLightContent

UIStatusBarStyleLightContent.png

2. 改变状态栏文字颜色方法:

方法1:直接设置storyboard的controller设置:

storyboard设置.png

方法2:代码设置,在UIViewController中重载: (个别页面改变的话,建议用这种方法!)

-(UIStatusBarStyle)preferredStatusBarStyle{returnUIStatusBarStyleLightContent;}

这个方法不能直接调用,在需要改变样式的地方调用:

**[self setNeedsStatusBarAppearanceUpdate] **

示例:

-(void)viewWillAppear:(BOOL)animated{[selfsetNeedsStatusBarAppearanceUpdate];}

方法3:整个应用的状态栏颜色统一设置

在info.plist中 View controller-based status bar appearance 设为NO(不设置时默认为YES),利用[UIApplication sharedApplication].statusBarStyle(优先)调节。

info.plist.png

在AppDelegate.m中:(也可根据不同view个别添加到不同位置调节)

[UIApplication sharedApplication].statusBarStyle=UIStatusBarStyleLightContent;//  或:[UIApplication sharedApplication].statusBarStyle=UIStatusBarStyleDefault;//  或(带动画效果,一般在willappear/willdisappear里设置)[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleDefault animated:YES];

方法4:如果有navigationbar,则可 设置navigationbarstyle去调节statusbar的颜色

通过storyboard调节navigationBarStyle

或代码:

[viewController.navigationBar setBarStyle:UIBarStyleBlack];

二、StatusBar的显示和隐藏

1. 个别页面显示和隐藏

推荐方法:

显示和隐藏StatusBar只要在UIViewController中重载:

-(BOOL)prefersStatusBarHidden{returnYES;}

同样式改变一样需要调用**[self setNeedsStatusBarAppearanceUpdate] **方法.

补充:

如果iOS6和iOS7都支持,则处理方式如下:

1)如果info.plist中 View controller-based status bar appearance 设为NO。

则在iOS6和iOS7都是用下面的方法隐藏status bar。

[[UIApplication sharedApplication]setStatusBarHidden:YESwithAnimation:NO];

2)如果View controller-based status bar appearance 设为YES。(默认)

则需要判断当前是iOS6还是iOS7。

如果是iOS6,则还通过sharedApplication隐藏。

如果是iOS7,则用setNeedsStatusBarAppearanceUpdate的方式来隐藏status bar。

2. 全局默认无StatusBar

需要在项目配置info.plist文件总将Status bar is initially hidden 字段设置为 YES;并添加View controller-based status bar appearance 字段, 并将值设置为 NO:

info.plist.png

也可和上面一样设置来控制StatusBar全局隐藏:

[[UIApplication sharedApplication]setStatusBarHidden:YES];

三、动画效果

现在有两种动画效果:

UIStatusBarAnimationFade

UIStatusBarAnimationSlide.

从他们的名字可以得知他的具体是什么样的效果。

实现动画需要重载:

-(UIStatusBarAnimation)preferredStatusBarUpdateAnimation{returnUIStatusBarAnimationSlide;}

但是重载这个方法后,并没有动画效果。

这时,我们需要把[self setNeedsStatusBarAppearanceUpdate] 放在动画block中执行:

[UIView animateWithDuration:0.3animations:^{[selfsetNeedsStatusBarAppearanceUpdate];}];

这样动画效果就出现了。

ps: 有时有特殊的要求,需要对StatusBar的背景色进行改变,则可参考下面简书的一篇文章,感觉不错:

ios 状态栏statusBar的背景颜色

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、样式 1. StatusBar有两种样式: (默认高度为20) UIStatusBarStyleDefault...
    朱_源浩阅读 5,371评论 3 12
  • 状态栏: 导论: ios上状态栏:显示信号 、时间、电池状态的20像素的位置 状态栏分为前景和背景部分前景部分:就...
    Kasign阅读 3,944评论 0 0
  • 【iOS 开发】Status Bar 状态栏设置汇总 状态栏 个人觉得 iOS 的 Status Bar 状态栏也...
    Cocojiang阅读 873评论 0 1
  • ios上状态栏 就是指的最上面的20像素高的部分 状态栏分前后两部分,要分清这两个概念,后面会用到: 前景部分:就...
    SimpleBK阅读 3,010评论 1 3
  • 今天又去上了一节美术课,这是我今天的新作,还没完全涂完,有些细节还待修整,但是内心却满心欢喜。 30岁开始画画,没...
    爱华zong阅读 140评论 0 1