1.設(shè)置啟動頁的狀態(tài)欄樣式
進(jìn)入Xcode的Targets->General->DeploymentInfo->Status Bar Style,設(shè)置其值為Default時,狀態(tài)欄樣式為黑色;設(shè)置其值為Light時,狀態(tài)欄樣式為白色。設(shè)置完成之后info.plist里面的Status bar style值自動改變。

(在info.plist文件中,找到Status bar style鍵,其值為Gray style (default)時,狀態(tài)欄樣式為黑色;其值為UIStatusBarStyleLightContent時,狀態(tài)欄樣式為白色,作用跟直接在Deployment Info里選擇一樣。)
2.如果設(shè)置info.plist中UIViewControllerBasedStatusBarAppearance為NO,表示不需要控制器自己控制狀態(tài)欄則:
啟動后在AppDelegate中全局設(shè)置狀態(tài)欄樣式
[[UIApplicationsharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];
如果頁面需要特殊處理UIStatusBarStyleDefault,在viewWillAppear和viewWillDisappear中設(shè)置即可
- (void)viewWillAppear:(BOOL)animated {
[superviewWillAppear:animated];
[UIApplicationsharedApplication].statusBarStyle=UIStatusBarStyleDefault;
}
- (void)viewWillDisappear:(BOOL)animated {
[superviewWillDisappear:animated];
[UIApplicationsharedApplication].statusBarStyle=UIStatusBarStyleLightContent;
}
3.如果設(shè)置info.plist中UIViewControllerBasedStatusBarAppearance為YES,那么需要在控制器里實現(xiàn)preferredStatusBarStyle方法,自己控制狀態(tài)欄,全局設(shè)置無效
- (UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
對于導(dǎo)航控制器,需要在分類中實現(xiàn)preferredStatusBarStyle方法來控制導(dǎo)航控制器以及子控制器的狀態(tài)欄
- (UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
但是如果子控制器的狀態(tài)欄顯示與UINavigationController分類里設(shè)置的不一致,子控制器即使實現(xiàn)preferredStatusBarStyle方法也不會被調(diào)用,就需要特殊處理
解決辦法:讓UINavigationController實現(xiàn)- (UIViewController *)childViewControllerForStatusBarStyle方法。將頂層的控制器返回。這樣就可以了。
在分類中實現(xiàn)childViewControllerForStatusBarStyle
- (UIViewController*)childViewControllerForStatusBarStyle
{
returnself.topViewController;
}
然后在每個子制器里自己設(shè)置preferredStatusBarStyle