美文网首页
【转】iOS控件 — 状态栏 Status Bar

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

作者: 棒棒德 | 来源:发表于2019-12-26 10:48 被阅读0次

    转载链接: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的背景颜色

    相关文章

      网友评论

          本文标题:【转】iOS控件 — 状态栏 Status Bar

          本文链接:https://www.haomeiwen.com/subject/ajskoctx.html