有時候我們需要根據不同的背景修改狀態欄字體的顏色,我的方法比較復雜,如果有更好用的方法歡迎大家提出來,我會持續更新的。
方法一
1.首先是設置info.plist 文件:
將View controller-based status bar appearance 的值設置為NO。
2.在AppDelegate.m 的方法中如下設置,默認會顯示黑色等于為你的app狀態欄設置一個主顏色
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//設置全局狀態欄字體顏色為黑色
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
//設置全局狀態欄字體顏色為白色
// [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
return YES;
}
3.在需要設置為白色的地方添加如下代碼:
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
4.在需要變回黑色的地方添加如下代碼:
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
例如你想將一個控制器的狀態欄的字體顏色設為白色代碼如下:
#pragma mark - 設置狀態欄顏色
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
}
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
}
這里要注意,在UITabBarController中如果選項卡每個頁面都加載出來,那么在你切換頁面時,會先調用下一個頁面的viewWillAppear方法,再調用本頁面的viewWillDisappear方法,會影響狀態欄的字體顏色改變.