*UINavigationController不會將 preferredStatusBarStyle方法調用轉給它的子視圖,而是由它自己管理狀態(tài),而且它也應該那樣做.因為UINavigationController 包含了它自己的狀態(tài)欄
因此就算 UINavigationController中的viewController 實現了 preferredStatusBarStyle方法 也不會調用
那 UINavigationController是怎么決定 該返回 UIStatusBarStyleLightContent 還是 UIStatusBarStyleDefault的呢? 它是基于它的 UINavigationBar.barStyle屬性.默認(UIBarStyleDefault)的是黑色文本的狀態(tài)欄 而 UIBarStyleBlack是設置為白色文本的狀態(tài)欄*
也就是說,如果viewController是在導航中的,想要改變狀態(tài)欄文本顏色,那么需要通過代碼:
//將status bar 文本顏色設置為白色
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
//將status bar 文本顏色設置為黑色 ,默認就是黑色
self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
另外,如果viewController在導航中,還想通過 preferredStatusBarStyle 方法設置狀態(tài)欄文本顏色,那就只能隱藏導航欄了:
//隱藏導航欄后 系統(tǒng)會調用 preferredStatusBarStyle 方法
self.navigationController.navigationBarHidden = YES;