iOS開發(fā)狀態(tài)欄及設(shè)置功能全面詳解
正文
在iOS的應(yīng)用程序中,狀態(tài)欄(StatusBar)是用來展示當(dāng)前設(shè)備的一些信息,例如電池電量、網(wǎng)絡(luò)連接狀態(tài)、時(shí)間等等。在開發(fā)過程中,我們可以通過修改狀態(tài)欄來增強(qiáng)用戶體驗(yàn),如顯示網(wǎng)絡(luò)請求的狀態(tài),顯示音頻播放器的播放進(jìn)度等等。
下面是在Swift中修改狀態(tài)欄的幾種方式及其代碼實(shí)現(xiàn):
1. 設(shè)置狀態(tài)欄樣式(最下面有更詳細(xì)的解答):
在UIViewController
中,我們可以通過設(shè)置preferredStatusBarStyle
屬性來設(shè)置狀態(tài)欄樣式。在這個(gè)屬性里面,我們可以指定不同的樣式,例如黑底白字、白底黑字等等。
代碼示例:
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent // 設(shè)置白底黑字樣式 }
2. 隱藏狀態(tài)欄:
在UIViewContoller
中,我們可以通過設(shè)置prefersStatusBarHidden
屬性來隱藏狀態(tài)欄。
代碼示例:
override var prefersStatusBarHidden: Bool { return true // 隱藏狀態(tài)欄 }
3. 設(shè)置狀態(tài)欄背景顏色:
在iOS7
之后,我們可以實(shí)現(xiàn)自定義的狀態(tài)欄背景顏色,去除默認(rèn)的半透明效果。
代碼示例:
// 設(shè)置狀態(tài)欄背景顏色 if let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView { statusBar.backgroundColor = .red // 設(shè)置為紅色 }
在Swift中,我們可以通過以下方式來設(shè)置狀態(tài)欄顏色:
1. 在Info.plist文件中設(shè)置
我們可以在Info.plist文件中設(shè)置UIViewControllerBasedStatusBarAppearance
為false
,然后在AppDelegate
中使用UIApplication.shared.statusBarStyle
來全局設(shè)置狀態(tài)欄樣式。
代碼示例:
// AppDelegate.swift func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // 設(shè)置狀態(tài)欄樣式 UIApplication.shared.statusBarStyle = .lightContent return true } // Info.plist <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
2. 在UIViewController中設(shè)置
我們可以在每個(gè)UIViewController
中重寫preferredStatusBarStyle
屬性來設(shè)置該頁面的狀態(tài)欄樣式。
代碼示例:
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
3. 在UIApplication中設(shè)置
在較舊的iOS版本中,在UIApplication中設(shè)置狀態(tài)欄樣式可以全局修改整個(gè)應(yīng)用程序的狀態(tài)欄樣式。
代碼示例:
// 設(shè)置全局狀態(tài)欄樣式 UIApplication.shared.statusBarStyle = .lightContent
4. 有導(dǎo)航欄的情況
如果我們使用了導(dǎo)航控制器 UINavigationController
, 且它的 navigationBar
沒有被隱藏,那么會發(fā)現(xiàn)即使重寫 preferredStatusBarStyle
方法,這個(gè)方法也不會被調(diào)用。因?yàn)榇藭r(shí)狀態(tài)欄的樣式是根據(jù)導(dǎo)航欄的樣式來自動(dòng)變換的。
代碼示例:
class QQBaseNavVC: UINavigationController { override func viewDidLoad() { super.viewDidLoad() self.navigationBar.barStyle = .black // Do any additional setup after loading the view. } }
import UIKit class ViewController: UIViewController { // 當(dāng)前statusBar使用的樣式 var style: UIStatusBarStyle = .default // 重現(xiàn)statusBar相關(guān)方法 override var preferredStatusBarStyle: UIStatusBarStyle { return self.style } override func viewDidLoad() { super.viewDidLoad() } // 每次點(diǎn)擊按鈕切換一次樣式 @IBAction func changeBtnStyle(_ sender: Any) { if let isHidden = self.navigationController?.isNavigationBarHidden { // 切換導(dǎo)航欄顯示或者隱藏 self.navigationController?.isNavigationBarHidden = !isHidden // 更新狀態(tài)欄顏色 self.style = !isHidden ? .lightContent : .default } } }
以上就是iOS開發(fā)狀態(tài)欄及設(shè)置功能全面詳解的詳細(xì)內(nèi)容,更多關(guān)于iOS開發(fā)狀態(tài)欄設(shè)置的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
iOS開發(fā)之獲取LaunchImage啟動(dòng)圖的實(shí)例
下面小編就為大家分享一篇iOS開發(fā)之獲取LaunchImage啟動(dòng)圖的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12iOS中textField限制字符串長度、字符數(shù)的方法
這篇文章主要給大家介紹了關(guān)于iOS中textField限制字符串長度、字符數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06iOS App中UILabel的自定義及在Auto Layout中的使用
這篇文章主要介紹了iOS App中UILabel的自定義及在Auto Layout中的使用,示例代碼為傳統(tǒng)的Objective-C語言,需要的朋友可以參考下2016-03-03iOS的HTTP請求和請求回執(zhí)類用法小結(jié)
這里為大家整理了iOS的HTTP請求和請求回執(zhí)類用法小結(jié),包括發(fā)送請求的NSURLRequest、NSMutableURLRequest和負(fù)責(zé)回復(fù)的NSURLResponse類的常用方法和屬性,需要的朋友可以參考下2016-06-06簡介iOS開發(fā)中應(yīng)用SQLite的模糊查詢和常用函數(shù)
這篇文章主要介紹了iOS開發(fā)中應(yīng)用SQLite的模糊查詢和常用函數(shù),SQLite是一個(gè)可作嵌入式的數(shù)據(jù)庫非常適合小型應(yīng)用使用,需要的朋友可以參考下2015-12-12iOS App設(shè)計(jì)模式開發(fā)中對interpreter解釋器模式的運(yùn)用
這篇文章主要介紹了iOS App設(shè)計(jì)模式開發(fā)中對interpreter解釋器模式的運(yùn)用,示例為傳統(tǒng)的Objective-C寫成,需要的朋友可以參考下2016-04-04