美文网首页
更改 status bar 颜色方案

更改 status bar 颜色方案

作者: Zhang_yD | 来源:发表于2017-01-11 17:26 被阅读57次
    status_bar.gif

    status bar 有两种颜色方案

    UIStatusBarStyleDefault - 黑色
    UIStatusBarStyleLightContent - 白色
    

    以下几种情况我们有可能会希望更换status bar的颜色
    · push新页面
    · 从上向下弹出提示框
    · 回到上级页面

    较新的iOS版本里面推荐控制器管理status bar的样式,不过有时候我们更喜欢统一管理。
    如果要禁用控制器管理需要做如下设置:

    在Info.plist里面添加一条信息 View controller-based status bar appearance 并赋值为 NO
    
    或者
    右键Info.plist open as source code 并添加以下信息
    <key>UIViewControllerBasedStatusBarAppearance</key>
    <false/>
    

    关于设置颜色,我的方法是在一个工具类里面进行修改并对外提供接口

    
    .h
    + (void)setStatusBarStyle:(UIStatusBarStyle)style duration:(float)duration;
    
    .m
    interface
    @property (nonatomic, assign) UIStatusBarStyle currentStatusBar;
    @property (nonatomic, assign) BOOL barStatusInDuration;
    
    + (void)setStatusBarStyle:(UIStatusBarStyle)style duration:(float)duration {
        [[ZWindow defaultWindow] changeStatusBarStyle:style duration:duration];
    }
    
    - (void)changeStatusBarStyle:(UIStatusBarStyle)style duration:(float)duration {
        if (duration < 0.1) {
            self.currentStatusBar = style;
            if (!self.barStatusInDuration) {
                [UIApplication sharedApplication].statusBarStyle = style;
            }
        } else {
            self.barStatusInDuration = YES;
            [UIApplication sharedApplication].statusBarStyle = style;
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(duration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                [UIApplication sharedApplication].statusBarStyle = self.currentStatusBar;
                self.barStatusInDuration = NO;
            });
        }
    }
    

    这样,对于需要执行的提示信息,只需要设置duration参数即可。


    相关文章

      网友评论

          本文标题:更改 status bar 颜色方案

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