項(xiàng)目中使用
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
會(huì)報(bào)警告
'setStatusBarStyle:' is deprecated: first deprecated in iOS 9.0 - Use -[UIViewController preferredStatusBarStyle]
解決辦法:
消除這個(gè)警告需要使用preferredStatusBarStyle這個(gè)API,
在項(xiàng)目中的info.plist文件里添加View controller-based status bar appearance,并修改成YES

WeChat144aeb38f19be4bb8afcbfb089c30d89.png
定義一個(gè)UIStatusBarStyle變量
@property (nonatomic, assign) UIStatusBarStyle myStatusBarStyle;
設(shè)置狀態(tài)欄默認(rèn)顯示為黑色
- (void)viewDidLoad {
[super viewDidLoad];
//默認(rèn)狀態(tài)欄為黑色
self.myStatusBarStyle = UIStatusBarStyleDefault;
}
自定義某個(gè)控制器中的顏色
重寫(xiě)這個(gè),返回你想要的狀態(tài)
- (UIStatusBarStyle)preferredStatusBarStyle {
NSLog(@"改變狀態(tài)欄顏色");
return self.myStatusBarStyle;
}
更新?tīng)顟B(tài)
///監(jiān)聽(tīng)scrollView的滾動(dòng)事件
- (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];
}
}
}
這樣就可以修改狀態(tài)欄的顏色
當(dāng)視圖控制器的狀態(tài)欄屬性的返回值發(fā)生變化時(shí),會(huì)被調(diào)用。如果在一個(gè)block塊中調(diào)用它,那么更改將與block塊的其余部分一起被動(dòng)畫(huà)化。
- (void)setNeedsStatusBarAppearanceUpdate
如果想在啟動(dòng)的時(shí)候就隱藏狀態(tài)欄
在Info.plist中增加一個(gè)配置即可:Status bar is initially hidden 為YES
這里的YES表示在app初始化(啟動(dòng))的時(shí)候就隱藏狀態(tài)欄。
當(dāng)然,在啟動(dòng)圖顯示完畢后狀態(tài)欄還是隱藏的。如果想重新顯示狀態(tài)欄,補(bǔ)上下面代碼即可:
[UIApplication sharedApplication].statusBarHidden = NO;