preferredStatusBarStyle 和 UIApplication
在幾個月前或者更早之前啄踊,本人一直使用
[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];
的方式來設置 statusBar 的顏色效果,但自從出現(xiàn)了下方圖片中的警告后猿涨,果斷替換成用 preferredStatusBarStyle
來設置 statusBar。
按住 command 點擊方法
preferredStatusBarStyle
查看 API:preferredStatusBarStyle
方法在 iOS 7 就有了。要使用這個方法敌卓,需要在 info.plist 里設置 View controller-based status bar appearance
為 YES,之后在對應的 viewController 內(nèi)設置:
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
preferredStatusBarStyle
會在頁面顯示前瘟檩,或者說在生命周期 viewDidLoad
和 viewWillAppear
方法之前調(diào)用一次抹缕,如果需要在一個 viewController 中動態(tài)改變 statusBarStyle 或者 隱藏/顯示 statusBar( prefersStatusBarHidden
),使用
[self setNeedsStatusBarAppearanceUpdate];
來調(diào)用一次 preferredStatusBarStyle
和 prefersStatusBarHidden
墨辛。
preferredStatusBarStyle 和 navigationController
有的同學在 viewController 中寫了 preferredStatusBarStyle
卓研,卻沒有調(diào)用,這是因為如果 viewController 有一個 navigationController睹簇,那 viewController 在顯示或者調(diào)用了 setNeedsStatusBarAppearanceUpdate
時便不會進入自己的 preferredStatusBarStyle
方法里奏赘,而是先進入 navigationController 的 preferredStatusBarStyle
中。此時如果需要 viewController 的有效太惠,需要在 navigationController 中加上
- (UIViewController *)childViewControllerForStatusBarStyle {
return self.topViewController;
}
這樣就會以當前 navigationController.topViewController
的 preferredStatusBarStyle
返回值作為應該顯示的 statusBarStyle磨淌。
preferredStatusBarStyle 和 runtime
其實 preferredStatusBarStyle
與 runtime 結合食用效果更佳(適用于大部分頁面 statusBarStyle 一致,小部分需要調(diào)整)凿渊,這樣就不需要在每個需要調(diào)整的頁面都寫一次 preferredStatusBarStyle
梁只,在開發(fā)迭代過程中也會方便很多缚柳,記住 ,DRY 原則搪锣。
總結
歡迎交流~
補充代碼地址秋忙。