项目中使用
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
会报警告
'setStatusBarStyle:' is deprecated: first deprecated in iOS 9.0 - Use -[UIViewController preferredStatusBarStyle]
解决办法:
消除这个警告需要使用preferredStatusBarStyle这个API,
在项目中的info.plist文件里添加View controller-based status bar appearance,并修改成YES
WeChat144aeb38f19be4bb8afcbfb089c30d89.png
定义一个UIStatusBarStyle变量
@property (nonatomic, assign) UIStatusBarStyle myStatusBarStyle;
设置状态栏默认显示为黑色
- (void)viewDidLoad {
[super viewDidLoad];
//默认状态栏为黑色
self.myStatusBarStyle = UIStatusBarStyleDefault;
}
自定义某个控制器中的颜色
重写这个,返回你想要的状态
- (UIStatusBarStyle)preferredStatusBarStyle {
NSLog(@"改变状态栏颜色");
return self.myStatusBarStyle;
}
更新状态
///监听scrollView的滚动事件
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
if (scrollView == self.myTableView) {
CGFloat offsetY = scrollView.contentOffset.y;
if (offsetY > 0) {
//[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
self.myStatusBarStyle = UIStatusBarStyleDefault;
[self setNeedsStatusBarAppearanceUpdate];
} else {
//[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
self.myStatusBarStyle = UIStatusBarStyleLightContent;
[self setNeedsStatusBarAppearanceUpdate];
}
}
}
这样就可以修改状态栏的颜色
当视图控制器的状态栏属性的返回值发生变化时,会被调用。如果在一个block块中调用它,那么更改将与block块的其余部分一起被动画化。
- (void)setNeedsStatusBarAppearanceUpdate
如果想在启动的时候就隐藏状态栏
在Info.plist中增加一个配置即可:Status bar is initially hidden 为YES
这里的YES表示在app初始化(启动)的时候就隐藏状态栏。
当然,在启动图显示完毕后状态栏还是隐藏的。如果想重新显示状态栏,补上下面代码即可:
[UIApplication sharedApplication].statusBarHidden = NO;
网友评论