iOS系統(tǒng)的狀態(tài)欄顏色通常有白色和黑色兩種,對應的就是UIStatusBarStyleLightContent
和UIStatusBarStyleDefault
兩種樣式,改變狀態(tài)欄的顏色就是通過設置不同的樣式來實現(xiàn)的。
iOS為我們提供了兩種設置狀態(tài)欄的方式:統(tǒng)一設置app所有控制器的狀態(tài)欄顏色和單獨設置某個控制器的狀態(tài)欄顏色
統(tǒng)一設置app所有控制器的狀態(tài)欄顏色
首先津肛,我們需要了解一下info.plist
里的View Controller-based status bar appearance
屬性,如果將該屬性設為YES,則控制器對狀態(tài)欄的設置優(yōu)先級最高唬滑,可以在控制器中對顏色進行單獨修改,如果將該屬性設為NO棺弊,則以啟動圖設置為準晶密,即app內(nèi)部所有控制器view上的狀態(tài)欄都與啟動圖上的保持一致,當然我們還可以通過UIApplication
來進行管理模她。
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
單獨設置某個控制器的狀態(tài)欄顏色
單獨設置某個控制器的狀態(tài)欄顏色首先需要將View Controller-based status bar appearance
屬性設為YES稻艰,然后在對應的控制器中加入如下代碼:
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
這里需要注意一點就是如果控制器在navigationController或tabBar中,通過自定義navigationController或tabBar重寫如下方法:
- (UIViewController *)childViewControllerForStatusBarStyle {
return self.topViewController;
}
如果隨時更改狀態(tài)欄顏色
有些特殊情況下侈净,我們需要隨時改變當前頁面的狀態(tài)欄顏色尊勿,這時就需要通過調(diào)用setNeedsStatusBarAppearanceUpdate
方法僧凤,這個方法會通知系統(tǒng)去調(diào)用當前控制器的preferredStatusBarStyle
方法,然后根據(jù)設置的方法來設置顏色元扔。