系統自帶效果
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; 這個方法設置沒有任何效果,時間緊迫,先這樣處理了,遲點項目沒那么趕的時候再完善,寫個工具類