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ò)請(qǐng)求的狀態(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 沒有被隱藏,那么會(huì)發(fā)現(xiàn)即使重寫 preferredStatusBarStyle方法,這個(gè)方法也不會(huì)被調(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è)置的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
iOS開發(fā)之獲取LaunchImage啟動(dòng)圖的實(shí)例
下面小編就為大家分享一篇iOS開發(fā)之獲取LaunchImage啟動(dòng)圖的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12
iOS中textField限制字符串長度、字符數(shù)的方法
這篇文章主要給大家介紹了關(guān)于iOS中textField限制字符串長度、字符數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06
iOS App中UILabel的自定義及在Auto Layout中的使用
這篇文章主要介紹了iOS App中UILabel的自定義及在Auto Layout中的使用,示例代碼為傳統(tǒng)的Objective-C語言,需要的朋友可以參考下2016-03-03
iOS的HTTP請(qǐng)求和請(qǐng)求回執(zhí)類用法小結(jié)
這里為大家整理了iOS的HTTP請(qǐng)求和請(qǐng)求回執(zhí)類用法小結(jié),包括發(fā)送請(qǐng)求的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-12
iOS App設(shè)計(jì)模式開發(fā)中對(duì)interpreter解釋器模式的運(yùn)用
這篇文章主要介紹了iOS App設(shè)計(jì)模式開發(fā)中對(duì)interpreter解釋器模式的運(yùn)用,示例為傳統(tǒng)的Objective-C寫成,需要的朋友可以參考下2016-04-04

