zoukankan      html  css  js  c++  java
  • Status Bar 总结

    1. 样式 

    StatusBar有两种样式: 

        •  UIStatusBarStyleDefault :

                        

        • UIStatusBarStyleLightContent 

                        

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

    1)直接设置storyboard的controller设置:

    计算机生成了可选文字:
Simulated Metrics 
SizeA 
Orientati 
Bottom 
V Inferred 
Default 
Light Content 
Black (Deprecated)

    2)代码设置,在UIViewController中重载: 

    - (UIStatusBarStyle)preferredStatusBarStyle
    {
        return UIStatusBarStyleLightContent;
    }

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

    示例: 

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

    3)要整个应用的状态栏颜色统一设置, 则info.plist中 View controller-based status bar appearance 设为NO(不设置时默认为YES),利用[UIApplication sharedApplication].statusBarStyle(优先)调节。(不要和其他设置方法混合使用,不推荐使用)

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

    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

     或:

    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;    

    4)如果有navigationbar,则可 设置navigationbar style去调节statusbar的颜色

    通过storyboard调节navigationBarStyle

    或代码:

    [viewController.navigationBar setBarStyle: UIBarStyleBlack];

    2. 显示和隐藏 

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

    - (BOOL)prefersStatusBarHidden
    {
        return YES;
    }

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

    补充:

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

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

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

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

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

    则需要判断当前是iOS6还是iOS7。如果是iOS6,则还通过sharedApplication隐藏。

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

    3. 动画效果 

    现在有两种动画效果:UIStatusBarAnimationFade ,UIStatusBarAnimationSlide.从他们的名字可以得知他的具体是什么眼的效果。 实现动画需要重载: 

    - (UIStatusBarAnimation )preferredStatusBarUpdateAnimation
    {
        return UIStatusBarAnimationSlide;
    }

    但是重载这个方法后,并没有动画效果。这时,我们需要把 [self setNeedsStatusBarAppearanceUpdate] 放在动画block中执行:

    [UIView animateWithDuration:0.3
                     animations:^{
                        [self setNeedsStatusBarAppearanceUpdate];
    }];

    这样动画效果就出现了。 

    4. 默认无StatusBar 

    有一些应用默认就没有Statusbar如: 

    这样的应用很丑,总感觉缺点什么,但是有些产品经理就是喜欢。 

    要实现这种效果,最需要在项目配置plist文件总将Status bar is initially hidden 字段设置为 YES, 添加View controller-based status bar appearance 字段, 并将值设置为 NO: 

    额外参考: http://segmentfault.com/a/1190000003482218

  • 相关阅读:
    深入理解DB2缓冲池(BufferPool)
    收银台采坑总结
    webpack4的总结
    无心法师-讲解
    cache 缓存的处理
    用es6方式的写的订阅发布的模式
    Skeleton Screen -- 骨架屏--应用
    promise实现原理
    业务线移动端适配方案总结
    vdom,diff,key 算法的了解
  • 原文地址:https://www.cnblogs.com/xifanii/p/4815988.html
Copyright © 2011-2022 走看看