狀態(tài)欄:
導(dǎo)論:
ios上狀態(tài)欄:顯示信號 旧乞、時間熊尉、電池狀態(tài)的20像素的位置
狀態(tài)欄分為前景和背景部分
前景部分:就是指的顯示電池、時間等部分擅这;
背景部分:就是顯示黑色或者圖片的背景部分;
(一)設(shè)置statusBar的【前景部分】
這里只有兩種顏色:
默認的黑色(UIStatusBarStyleDefault)
白色(UIStatusBarStyleLightContent)
可以設(shè)置的地方有兩個:plist設(shè)置里面 和 程序代碼里
1采章、plist
View controller-based status bar appearance (需要手動添加)
info.plist文件中运嗜,View controller-based status bar appearance 項的設(shè)置:
1,為YES悯舟,則ViewController對status bar的設(shè)置優(yōu)先級高于application的設(shè)置担租。則[UIApplication sharedApplication].statusBarStyle 無效。
2图谷,為NO翩活,則以application的設(shè)置為準,viewController的prefersStatusBarHidden方法無效便贵,是根本不會被調(diào)用的。
2冗荸、代碼設(shè)置
(1)承璃、[UIApplicationsharedApplication].statusBarStyle=UIStatusBarStyleLightContent;
(2)、重寫- (UIStatusBarStyle)preferredStatusBarStyle {
? ? ? ? ? ? ? ? ? ? ? ? ? ? return UIStatusBarStyleLightContent;//白色
? ? ? ? ? ? ? ? ? ? ? ? ? ?//returnUIStatusBarStyleDefault;//默認的黑色
? ? ? ? ? ? ? ? ? ? ? ? }
(二)設(shè)置statusBar的【背景部分】
(1)蚌本、系統(tǒng)提供的方法
navigationBar的setBarTintColor接口盔粹,用此接口可改變statusBar的背景色:
self.navigationController.navigationBar.barTintColor= [UIColor ?redColor];
將狀態(tài)欄和導(dǎo)航欄字體全變?yōu)榘咨?
self.navigationController.navigationBar.barStyle=UIBarStyleBlack;
此行代碼能將狀態(tài)欄和導(dǎo)航欄字體顏色全體改變,只能是黑色或白色.png
如果只想改變導(dǎo)航欄的字體顏色,可以這樣
[self.navigationController.navigationBarsetTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColorredColor]}];
在默認顯示的標題中直接修改文件的大小和顏色也是可以的
改變字體大小:
[self.navigationController.navigationBarsetTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColorredColor],NSFontAttributeName:[UIFontsystemFontOfSize:25]}];
或者可以設(shè)置背景圖片
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"image01"] forBarMetrics:UIBarMetricsDefault];
改變狀態(tài)欄的方法
方法一:
1、如果plist中設(shè)置如下:
View controller-based status bar appearance 設(shè)置為 NO
2程癌、代碼設(shè)置
[UIApplicationsharedApplication].statusBarStyle=UIStatusBarStyleLightContent;
方法二:
1舷嗡、如果plist中設(shè)置如下:
View controller-based status bar appearance 設(shè)置為 YES 或者默認(不設(shè)置)
注意:
如果View controller-based status bar appearance為YES。
則[UIApplication sharedApplication].statusBarStyle 無效嵌莉。
2进萄、代碼設(shè)置
self.navigationController.navigationBar.barStyle=UIBarStyleBlack;
或者在控制器中重寫preferredStatusBarStyle方法,修改狀態(tài)欄顏色
- (UIStatusBarStyle)preferredStatusBarStyle {
// ? return UIStatusBarStyleLightContent;
returnUIStatusBarStyleDefault;
}
隱藏狀態(tài)欄:
一、高版本iOS的處理方法:
(一)锐峭、如果View controller-based status bar appearance 設(shè)為YES中鼠。
這時 ViewController中對status bar的設(shè)置優(yōu)先級高于application的設(shè)置,用下面的方式隱藏status bar:
1沿癞、在ViewController中調(diào)用setNeedsStatusBarAppearanceUpdate援雇,更新status bar的顯示。
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])?
{
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
}
2椎扬、覆蓋view controller的prefersStatusBarHidden的實現(xiàn)惫搏,返回YES。
- (BOOL)prefersStatusBarHidden
{
return YES;
}
(二)蚕涤、如果View controller-based status bar appearance 設(shè)為NO,這時application的設(shè)置優(yōu)先級最高筐赔,用下面的方式隱藏status bar:
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
二、低版本的處理方法:
綜合上面的結(jié)論钻趋,如果iOS6和iOS7都支持川陆,則處理方式如下:
(一)、如果View controller-based status bar appearance 設(shè)為NO。
則在iOS6和iOS7都是用下面的方法隱藏status bar较沪。
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
(二)鳞绕、如果View controller-based status bar appearance 設(shè)為YES。
則需要判斷當(dāng)前是iOS6還是iOS7尸曼。如果是iOS6们何,則還通過[UIApplication sharedApplication]隱藏。
如果是iOS7控轿,則用setNeedsStatusBarAppearanceUpdate加prefersStatusBarHidden的方式來隱藏 status bar冤竹。
取info.plist中 View controller-based status bar appearance中的設(shè)置:
NSNumber *vcBasedStatusBarAppearance = [[NSBundle mainBundle]objectForInfoDictionaryKey:@"UIViewControllerBasedStatusBarAppearance"];
if (vcBasedStatusBarAppearance) {
_isVCBasedStatusBarAppearance = vcBasedStatusBarAppearance.boolValue;
} else {
_isVCBasedStatusBarAppearance = YES; // default
}
以上圖片均來自網(wǎng)絡(luò),如有侵權(quán)私信刪除茬射。