1. 程式人生 > >[Swift通天遁地]五、高階擴充套件-(9)顏色、裝置、UserDefaults、URL等擴充套件方法

[Swift通天遁地]五、高階擴充套件-(9)顏色、裝置、UserDefaults、URL等擴充套件方法

本文將演示顏色、裝置、UserDefaults、URL等擴充套件方法。

首先確保在專案中已經安裝了所需的第三方庫。

點選【Podfile】,檢視安裝配置檔案。

1 platform :ios, '12.0'
2 use_frameworks!
3 
4 target 'DemoApp' do
5     source 'https://github.com/CocoaPods/Specs.git'
6     pod 'EZSwiftExtensions'
7 end

根據配置檔案中的相關配置,安裝第三方庫。

然後點選開啟【DemoApp.xcworkspace】專案檔案。

在專案導航區,開啟檢視控制器的程式碼檔案【ViewController.swift】

  1 import UIKit
  2 //在當前的類檔案中,引入已經安裝的第三方類庫
  3 import EZSwiftExtensions
  4 
  5 class ViewController: UIViewController {
  6 
  7     override func viewDidLoad() {
  8         super.viewDidLoad()
  9         // Do any additional setup after loading the view, typically from a nib.
10 //顏色的擴充套件 11 uiColorExtensions() 12 //裝置型別的擴充套件方法 13 uiDeviceExtensions() 14 //輕量級本地資料儲存型別的擴充套件 15 userDefaultsExtensions() 16 //URL網址型別的擴充套件方法 17 urLExtensions() 18 } 19 20 //新增一個方法,用於顏色的擴充套件 21 func uiColorExtensions()
22 { 23 //第三方類庫對顏色類的初始化方法進行了優化, 24 //使開發者可以根據紅綠藍三原色和透明度等資訊,建立所需的顏色。 25 _ = UIColor(r: 100, g: 100, b: 100) 26 _ = UIColor(r: 100, g: 100, b: 100, a: 0.5) 27 28 //同樣可以通過初始化方法,建立不同透明度的灰階顏色 29 _ = UIColor.init(gray: 100) 30 _ = UIColor.init(gray: 100, alpha: 0.5) 31 32 //初始化一個預設值為洋紅的顏色物件 33 let myColor5 = UIColor.magenta 34 //通過對顏色型別擴充套件的屬性, 35 //可以快速獲取顏色物件的四個通道的值 36 print("myColor5.redComponent:\(myColor5.redComponent)") 37 print("myColor5.greenComponent:\(myColor5.greenComponent)") 38 print("myColor5.blueComponent:\(myColor5.blueComponent)") 39 print("myColor5.alpha:\(myColor5.alpha)") 40 41 //通過初始化方法,可以通過十六進位制的字串,建立所需的顏色, 42 //並且制定顏色的不透明度。 43 _ = UIColor(hexString: "0x233C64") 44 _ = UIColor(hexString: "0x233C64", alpha: 0.6) 45 //甚至可以去掉前方的十六進位制的標誌符號 46 _ = UIColor(hexString: "233C64") 47 //或者使用常見的#號標誌 48 _ = UIColor(hexString: "#233C64") 49 50 //通過顏色物件的隨機顏色的方法,可以獲得一個隨機的顏色 51 _ = UIColor.randomColor() 52 } 53 54 //新增一個方法,裝置型別的擴充套件方法 55 func uiDeviceExtensions() 56 { 57 //通過裝置類的擴充套件方法, 58 //獲得供應商的唯一標誌符 59 print("UIDevice.idForVendor():\(String(describing: UIDevice.idForVendor()))") 60 //獲得並輸出裝置的系統名稱 61 print("UIDevice.systemName():\(UIDevice.systemName())") 62 //獲得並輸出裝置的系統版本 63 print("UIDevice.systemVersion():\(UIDevice.systemVersion())") 64 //獲得並輸出裝置的名稱 65 print("UIDevice.deviceName():\(UIDevice.deviceName())") 66 //獲得並輸出裝置的型號 67 print("UIDevice.deviceModel():\(UIDevice.deviceModel())") 68 //獲得並輸出裝置的的型號是否可被獲取 69 print("UIDevice.deviceModelReadable():\(UIDevice.deviceModelReadable())") 70 //獲得並輸出裝置的語言 71 print("UIDevice.deviceLanguage():\(UIDevice.deviceLanguage())") 72 73 //檢測系統的版本號是否在12.0版本之上 74 print("UIDevice.isSystemVersionOver(12.0):\(UIDevice.isSystemVersionOver("12.0"))") 75 } 76 77 //新增一個方法,針對輕量級本地資料儲存型別的擴充套件 78 func userDefaultsExtensions() 79 { 80 //獲得本地資料儲存物件 81 let Defaults = UserDefaults.standard 82 //像使用字典一樣,依次設定兩個鍵的值 83 Defaults["userName"] = "Jerry" 84 Defaults["age"] = 35 85 86 //獲取本地儲存的值 87 let userName = Defaults["userName"] 88 let age = Defaults["age"] 89 90 //在控制檯輸出相應的資料 91 print("userName:\(String(describing: userName))") 92 print("age:\(String(describing: age))") 93 } 94 95 //新增一個方法,針對URL網址型別的擴充套件方法 96 func urLExtensions() 97 { 98 //初始化一個網址物件 99 let url = URL(string: "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=facebook") 100 //通過擴充套件屬性,快速獲得網址中的請求引數 101 if let queryParameters = url?.queryParameters 102 { 103 //通過鍵值查詢的方式,獲取並輸出引數的值 104 print("queryParameters[v]:\(String(describing: queryParameters["v"]))") 105 print("queryParameters[q]:\(String(describing: queryParameters["q"]))") 106 print("queryParameters[other]:\(String(describing: queryParameters["other"]))") 107 } 108 } 109 110 override func didReceiveMemoryWarning() { 111 super.didReceiveMemoryWarning() 112 // Dispose of any resources that can be recreated. 113 } 114 }