(關(guān)于修改頂部狀態(tài)欄背景以及前景色)
首先,在看文章之前首先要知道 View controller-based status bar appearance
這么一個key,在info.plist中進行配置
iPhone的狀態(tài)欄分為前景和背景,前景部分指的是顯示電池, 時間等部分; 背景部分指的是白色(圖bg1)或者黑色(圖bg2)的背景部分
修改前景色
- 如果
View controller-based status bar appearance
設置為YES, 那么控制器對status bar
的設置優(yōu)先級高于application
的設置 ,可以在控制器中通過以下代碼進行修改:
- (void)viewDidLoad {
[super viewDidLoad];
[self preferredStatusBarStyle];
//通過改背景色修改狀態(tài)欄的字體(信號,時間,電池)的顏色
self.view.backgroundColor = [UIColor blackColor];
}
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
默認的狀態(tài)欄的StatusBarStyle
為UIStatusBarStyleDefault
,也就是黑色;相反的,如果狀態(tài)欄的StatusBarStyle
為UIStatusBarStyleLightContent
,那就是亮色.如果修改StatusBarStyle
這個屬性,要記得修改背景色不與該顏色相同.否則視圖上將看不見狀態(tài)欄的字體.
2.如果 View controller-based status bar appearance
設置為NO,那么application
的設置優(yōu)先級最高. 可以在AppDelegate.m
的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法里添加如下代碼:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
如果只是在某個頁面修改狀態(tài)欄, 其他頁面不修改, 就需要在相應控制器的- (void)viewWillAppear:(BOOL)animated
方法里添加, 并且在- (void)viewWillDisappear:(BOOL)animated
恢復默認的風格, 代碼如下:
- (void)viewWillAppear:(BOOL)animated {
//view出現(xiàn)的時候狀態(tài)欄前景顏色改為亮色
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
- (void)viewWillDisappear:(BOOL)animated{
//view消失的時候狀態(tài)欄前景顏色改為默認/黑色
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}
同上, 要記得修改狀態(tài)欄背景色不與該顏色相同.否則視圖上將看不見狀態(tài)欄的字體.
修改背景色
1.當View controller-based status bar appearance
設置為YES,控制器才有權(quán)限對status的屬性進行修改.
2.iOS的狀態(tài)欄背景色默認是透明的.
在沒有導航欄的時候可以自定義一個黑色的,高度為20的View添加到狀態(tài)欄的位置,代碼如下:
UIView *topView = [[UIView alloc] init];
topView.backgroundColor = [UIColor blackColor];
[self.view addSubview:topView];
[topView mas_updateConstraints:^(MASConstraintMaker *make) {
make.top.left.right.equalTo(self.view);
make.height.mas_offset(20);
}];
而且, 前景色會隨著背景改變而改變, 無需再次設置.
當有導航欄的時候就需要修改導航欄的背景色繼而改變狀態(tài)欄的背景色,通過設置self.navigationController.navigationBar.barStyle
這個屬性進行設置:
//黑色
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
//白色
self.navigationController.navigationBar.barStyle = UIBarStyleDefault;