info.plist 有兩個屬性
Status bar is initially hidden 應用啟動時是否隱藏狀態(tài)欄 YES 隱藏 , NO顯示
?View controller-based status bar appearance ?是否由控制器 控制狀態(tài)欄 YES交給控制器控制,NO?UIApplication 控制
總結(jié)一下:
1、如果用 全局控制
?info.plist 要設置Status bar is initially hidden=NO(或者不添加該屬性) ?且?View controller-based status bar appearance =NO 后者必須添加且必須設為 ? ?NO
2、但是如果啟動圖的那一幀就是不想要statusBar 就只能局部控制 也就是兩個值都設為YES
3谴轮、控制器通過重寫?-(UIStatusBarStyle)preferredStatusBarStyle方法來顯示狀態(tài)欄
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
但是,如果是導航控制器的話,要分情況
1)如果導航欄顯示 的話 控制器的-(UIStatusBarStyle)preferredStatusBarStyle方法不會執(zhí)行佩谣,而是執(zhí)行導航欄的該方法,這時候要在導航控制器下重寫該方法
- (UIStatusBarStyle)preferredStatusBarStyle {?
? UIViewController *topVC = self.topViewController;? ?
? return [topVC preferredStatusBarStyle];
?}
2)導航欄如果是隱藏狀態(tài)的話 自控制器會執(zhí)行?-(UIStatusBarStyle)preferredStatusBarStyle該方法
4实蓬、如果是控制器控制狀態(tài)欄茸俭,- (BOOL)prefersStatusBarHidden方法不受導航欄限制,也就是說安皱,無論導航欄是否隱藏调鬓,自控制器的該方法都會執(zhí)行。
5酌伊、如果一個頁面要根據(jù)情況變化preferredStatusBarStyle 腾窝,可用- (void)setNeedsStatusBarAppearanceUpdate刷新顯示缀踪。
6、修改status背景色
1)
// 這個方法是設置導航欄背景顏色虹脯,狀態(tài)欄也會隨之變色
[self.navigationController.navigationBar setBarTintColor:[UIColorredColor]];
2)
- (void)setStatusBarBackgroundColor:(UIColor*)color {
UIView*statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
if([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {? ??
? ? statusBar.backgroundColor = color;
? ? }
}
參考鏈接