iOS開發技巧(Swift版):狀態欄(UIStatus)設置

狀態欄:? 是指iOS屏幕最上面的20像素高的部分,分為前景部分和背景部分

? ? *前景部分:? 包括電池、時間等部件;

? ? *后景部分:顯示顏色或圖片的背景部分;

? ? *狀態欄字體為黑色:UIStatusBarStyle.Default(默認);

? ? *狀態欄字體為白色:UIStatusBarStyle.LightContent;

方法一:

1、在Info.plist中,將View controller-based status bar appearance設為NO。(如沒有此選項可自行添加)

2、在AppDelegate.m中

UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent

或者

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated:true)

?(這2種書寫方式在iOS9.0以后,官方基本上已經不推薦了。當然還可以用,相比較,第二種書寫方式會報警告,所以在這里我用第一種書寫方式)

*注:到此步狀態欄已經基本設置完成!

3、在個別狀態欄字體顏色不一樣的VC中

方法二:(iOS9.0以后官方推薦的,個人覺得老方法好用)

在Info.plist中,將View controller-based status bar appearance設為YES,或者不設置(默認值就是YES, 則UIApplication.sharedApplication().statusBarStyle無效)

1、在VC中重寫VC的preferredStatusBarStyle方法

2、在viewDidload中調用:self.setNeedsStatusBarAppearanceUpdate() (剛開始的時候需要此調用,后來莫名其妙的的不需要了??)

*注:當VC在nav中時,上面的方法無效,VC中的preferredStatusBarStyle方法根本不用被調用。 原因是,self.setNeedsStatusBarAppearanceUpdate()發出后,只會調用navigation controller中的preferredStatusBarStyle方法,vc中的preferredStatusBarStyley方法跟本不會被調用。

解決方法有兩個:

一:自定義一個UINavigationController的子類,在這個子類中重寫childViewControllerForStatusBarStyle方法

二:設置navbar的barStyle屬性會影響statusBar的字體和背景色。如下。

//status bar的字體為白色

//導航欄的背景色是黑色。

self.navigationController?.navigationBar.barStyle = UIBarStyle.Black;

//status bar的字體為黑色

//導航欄的背景色是白色,狀態欄的背景色也是白色。

self.navigationController?.navigationBar.barStyle = UIBarStyle.Default;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
禁止轉載,如需轉載請通過簡信或評論聯系作者。

推薦閱讀更多精彩內容