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参数即可。
网友评论