狀態(tài)欄的字體為黑色:UIStatusBarStyleDefault
狀態(tài)欄的字體為白色:UIStatusBarStyleLightContent
一凌外、在info.plist中,將View controller-based status bar appearance設為NO
狀態(tài)欄字體的顏色只由下面的屬性設定玫镐,默認為白色:
// default is UIStatusBarStyleDefault
[UIApplication sharedApplication].statusBarStyle
解決個別vc中狀態(tài)欄字體顏色不同的辦法
1奥务、在info.plist中,將View controller-based status bar appearance設為NO.
2、在app delegate中:
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
3拄丰、在個別狀態(tài)欄字體顏色不一樣的vc中
-(void)viewWillAppear:(BOOL)animated{
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
}
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
}
二、在info.plist中俐末,將View controller-based status bar appearance設為YES愈案,或者沒有設置。View controller-based status bar appearance的默認值就是YES鹅搪。如果View controller-based status bar appearance為YES站绪。則[UIApplication sharedApplication].statusBarStyle 無效。用下面的方法:
1丽柿、在vc中重寫vc的preferredStatusBarStyle方法
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleDefault;
}
2.在viewDidload中調用:[self setNeedsStatusBarAppearanceUpdate];但是恢准,當vc在nav中時,上面方法沒用甫题,vc中的preferredStatusBarStyle方法根本不用被調用馁筐。原因是[self setNeedsStatusBarAppearanceUpdate]發(fā)出后,只會調用navigation controller中的preferredStatusBarStyle方法坠非,vc中的preferredStatusBarStyley方法跟本不會被調用敏沉。解決辦法有兩個:
方法一:設置navbar的barStyle 屬性會影響status bar 的字體和背景色
//status bar的字體為白色
//導航欄的背景色是黑色。
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
//status bar的字體為黑色
//導航欄的背景色是白色,狀態(tài)欄的背景色也是白色盟迟。
self.navigationController.navigationBar.barStyle =UIBarStyleDefault;
方法二:自定義一個nav bar的子類秋泳,在這個子類中重寫preferredStatusBarStyle方法:
MyNav* nav = [[MyNav alloc] initWithRootViewController:vc];
self.window.rootViewController = nav;
@implementation MyNav
-(UIStatusBarStyle)preferredStatusBarStyle{
UIViewController* topVC = self.topViewController;
return [topVC preferredStatusBarStyle];
}