系统自带效果
1.UIStatusBarStyleDefault 效果是:黑色字体、透明背景
2.UIStatusBarStyleLightContent 效果是:白色字体、透明背景
需求:改背景颜色
#注意:此方法调用后会全局改变statusBar的背景颜色,如果只需要当前控制器显示,那么应该在viewWillDisappear 中设置为clearColor
- (void)setStatusBarBackgroundColor:(UIColor *)color{
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
if ([statusBar respondsToSelector:@selector(setBackgroundColor:)])
{
statusBar.backgroundColor = color;
}
}
任意组合(白色或黑色字体 配合任意颜色的背景)
在导航控制器中重写方法:
- (UIViewController *)childViewControllerForStatusBarStyle{
return self.topViewController;
}
控制器中设置:UIStatusBarStyleDefault || UIStatusBarStyleLightContent 以达到修改文字颜色的效果
- (UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
注意(横屏情况下,iOS8之后系统会默认隐藏状态栏)重写系统方法去显示
//设置是否隐藏,iOS8.0之后,系统默认横屏的时候隐藏状态栏
- (BOOL)prefersStatusBarHidden {
return NO;
}
如果项目中使用频繁,可以封装成一个父类,工具类可能就麻烦点,
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; 这个方法设置没有任何效果,时间紧迫,先这样处理了,迟点项目没那么赶的时候再完善,写个工具类