iOS標(biāo)題欄

狀態(tài)欄:


導(dǎo)論:

ios上狀態(tài)欄:顯示信號(hào) 、時(shí)間、電池狀態(tài)的20像素的位置

狀態(tài)欄分為前景和背景部分

前景部分:就是指的顯示電池、時(shí)間等部分;

背景部分:就是顯示黑色或者圖片的背景部分;

(一)設(shè)置statusBar的【前景部分】

這里只有兩種顏色:

默認(rèn)的黑色(UIStatusBarStyleDefault)

白色(UIStatusBarStyleLightContent)

可以設(shè)置的地方有兩個(gè):plist設(shè)置里面 和 程序代碼里

1、plist

View controller-based status bar appearance (需要手動(dòng)添加)

info.plist文件中,View controller-based status bar appearance 項(xiàng)的設(shè)置:

1,為YES,則ViewController對(duì)status bar的設(shè)置優(yōu)先級(jí)高于application的設(shè)置。則[UIApplication sharedApplication].statusBarStyle 無效。

2,為NO,則以application的設(shè)置為準(zhǔn),viewController的prefersStatusBarHidden方法無效,是根本不會(huì)被調(diào)用的。

2、代碼設(shè)置

(1)、[UIApplicationsharedApplication].statusBarStyle=UIStatusBarStyleLightContent;

(2)、重寫- (UIStatusBarStyle)preferredStatusBarStyle {

? ? ? ? ? ? ? ? ? ? ? ? ? ? return UIStatusBarStyleLightContent;//白色

? ? ? ? ? ? ? ? ? ? ? ? ? ?//returnUIStatusBarStyleDefault;//默認(rèn)的黑色

? ? ? ? ? ? ? ? ? ? ? ? }


(二)設(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]}];

在默認(rèn)顯示的標(biāo)題中直接修改文件的大小和顏色也是可以的

改變字體大小:

[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 或者默認(rèn)(不設(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。

這時(shí) ViewController中對(duì)status bar的設(shè)置優(yōu)先級(jí)高于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的實(shí)現(xiàn),返回YES。

- (BOOL)prefersStatusBarHidden

{

return YES;

}

(二)、如果View controller-based status bar appearance 設(shè)為NO,這時(shí)application的設(shè)置優(yōu)先級(jí)最高,用下面的方式隱藏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)私信刪除。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容