美文网首页
更改 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