更改 status bar 颜色方案

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参数即可。


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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,347评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,196评论 4 61
  • 有些人,躺在你的联系人里,时不时出来炸个尸。而有些人,明明上一秒还和你热聊着,你开心地自说自话却不见他回复。甚至如...
    余生22阅读 2,849评论 0 0