国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

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

2019-10-21 18:39:52
字體:
供稿:網(wǎng)友

狀態(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 無效。

用下面的方法:

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í)比較高,所以按照如下添加就可以出來效果*/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ì)VEVB武林網(wǎng)的支持。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到IOS開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 府谷县| 开原市| 嘉定区| 秀山| 南涧| 衡阳市| 灵武市| 鱼台县| 通渭县| 兴城市| 大关县| 元阳县| 温泉县| 永春县| 承德县| 昭平县| 长乐市| 龙口市| 平阳县| 台湾省| 稷山县| 五指山市| 交口县| 平阴县| 木兰县| 津市市| 南充市| 外汇| 枣阳市| 香格里拉县| 井研县| 土默特右旗| 武夷山市| 台江县| 乾安县| 沭阳县| 淮阳县| 资阳市| 武陟县| 东方市| 彭泽县|