欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS開發(fā)技巧之狀態(tài)欄字體顏色的設(shè)置方法

 更新時(shí)間:2018年08月31日 08:32:18   作者:夢(mèng)想家-mxj  
有時(shí)候我們需要根據(jù)不同的背景修改狀態(tài)欄字體的顏色,下面這篇文章主要給大家介紹了關(guān)于iOS開發(fā)技巧之狀態(tài)欄字體顏色的設(shè)置方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧

狀態(tài)欄的字體為黑色:UIStatusBarStyleDefault

狀態(tài)欄的字體為白色:UIStatusBarStyleLightContent

一、在info.plist中,將View controller-based status bar appearance設(shè)為NO

狀態(tài)欄字體的顏色只由下面的屬性設(shè)定,默認(rèn)為白色:

// default is UIStatusBarStyleDefault
[UIApplication sharedApplication].statusBarStyle

解決個(gè)別vc中狀態(tài)欄字體顏色不同的辦法

1、在info.plist中,將View controller-based status bar appearance設(shè)為NO.

2、在app delegate中:

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

3、在個(gè)別狀態(tài)欄字體顏色不一樣的vc中

-(void)viewWillAppear:(BOOL)animated{
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
}

-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
}

二、在info.plist中,將View controller-based status bar appearance設(shè)為YES,或者沒有設(shè)置。

View controller-based status bar appearance的默認(rèn)值就是YES。

如果View controller-based status bar appearance為YES。

[UIApplication sharedApplication].statusBarStyle 無(wú)效。

用下面的方法:

1、在vc中重寫vc的preferredStatusBarStyle方法。

-(UIStatusBarStyle)preferredStatusBarStyle
{

return UIStatusBarStyleDefault;
}

2、在viewDidload中調(diào)用: [self setNeedsStatusBarAppearanceUpdate];

但是,當(dāng)vc在nav中時(shí),上面方法沒用,vc中的preferredStatusBarStyle方法根本不用被調(diào)用。

原因是, [self setNeedsStatusBarAppearanceUpdate]發(fā)出后,

只會(huì)調(diào)用navigation controller中的preferredStatusBarStyle方法,

vc中的preferredStatusBarStyley方法跟本不會(huì)被調(diào)用。

解決辦法有兩個(gè):

方法一:

設(shè)置navbar的barStyle 屬性會(huì)影響status bar 的字體和背景色。如下。

//status bar的字體為白色

//導(dǎo)航欄的背景色是黑色。

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

//status bar的字體為黑色

//導(dǎo)航欄的背景色是白色,狀態(tài)欄的背景色也是白色。

//self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

方法二:

自定義一個(gè)nav bar的子類,在這個(gè)子類中重寫preferredStatusBarStyle方法:

MyNav* nav = [[MyNav alloc] initWithRootViewController:vc];

self.window.rootViewController = nav;

@implementation MyNav

- (UIStatusBarStyle)preferredStatusBarStyle

{

UIViewController* topVC = self.topViewController;

return [topVC preferredStatusBarStyle];

}

附:修改狀態(tài)欄的背景顏色 (牽扯到UIWindow的層級(jí)關(guān)系)

/*改變狀態(tài)欄的背景顏色,因?yàn)闋顟B(tài)欄的層級(jí)比較高,所以按照如下添加就可以出來(lái)效果*/
UIView* stateView = [[UIView alloc] initWithFrame:CGRectMake(0, -20, SCREEN_WIDTH, 20)];
[self.navigationController.navigationBar addSubview:stateView];
stateView.backgroundColor = [UIColor purpleColor];

備注: 因?yàn)樵贠C中,都應(yīng)該知道UIWindow有三個(gè)層級(jí),如下:

UIKIT_EXTERN const UIWindowLevel UIWindowLevelNormal;
UIKIT_EXTERN const UIWindowLevel UIWindowLevelAlert;
UIKIT_EXTERN const UIWindowLevel UIWindowLevelStatusBar

它們層級(jí)的優(yōu)先級(jí)的值分別對(duì)應(yīng)的是:

UIWindowLevelNormal: 0

UIWindowLevelAlert: 1000

UIWindowLevelStatusBar:2000

(而且UIAlertView的層級(jí)優(yōu)先級(jí)為1996,UIActionSheet的層級(jí)優(yōu)先級(jí)為2001)
優(yōu)先級(jí)

總結(jié):

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論