1. 程式人生 > >[Swift通天遁地]五、高階擴充套件-(5)獲取互補色、漸變色、以及圖片主題顏色

[Swift通天遁地]五、高階擴充套件-(5)獲取互補色、漸變色、以及圖片主題顏色

本文將演示第三方類庫“變色龍”建立互補色、漸變色、以及圖片主題顏色。

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

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

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

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

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

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

現在開始編寫程式碼,獲取互補色、漸變色、以及圖片主題顏色。

  1 import UIKit
  2 //在當前的類檔案中,引入已經安裝的第三方類庫
  3 import ChameleonFramework
  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 //建立互補色或對比色 12 complementaryAndcontrasting() 13 14 //用於建立漸變顏色 15 gradientColors() 16 17 //獲得圖片的主題色 18 colorFromeImage()
19 } 20 21 //新增一個方法,用來生成互補色或對比色 22 func complementaryAndcontrasting() 23 { 24 //初始化一個標籤物件,其顯示區域和根檢視相同。 25 //該標籤物件的字型顏色將用來顯示其背景色 26 let label = UILabel(frame: self.view.frame) 27 //將其放置在根檢視的中心位置 28 label.center = self.view.center 29 //設定標籤的文字內容 30 label.text = "Complementary Color" 31 //設定文字的對齊方式為居中對齊 32 label.textAlignment = .center 33 //設定標籤的背景顏色為橙色 34 label.backgroundColor = UIColor.orange 35 36 //設定標籤的字型顏色,為其背景顏色的互補色 37 //label.textColor = UIColor(complementaryFlatColorOf:label.backgroundColor!) 38 39 //設定標籤的字型顏色,為其背景顏色的對比色 40 label.textColor = UIColor(contrastingBlackOrWhiteColorOn: label.backgroundColor!, isFlat: true) 41 42 //將標籤檢視新增到根檢視 43 self.view.addSubview(label) 44 } 45 46 //新增一個方法,用於建立漸變顏色 47 func gradientColors() 48 { 49 //初始化一個檢視物件,並設定檢視 物件的顯示區域 50 let view = UIView(frame: self.view.frame) 51 //設定檢視的背景顏色為漸變顏色 52 view.backgroundColor = UIColor(gradientStyle: .radial,//徑向漸變 53 withFrame: self.view.frame, 54 andColors: [.yellow, .orange])//由黃到橙 55 view.backgroundColor = UIColor(gradientStyle: .leftToRight, 56 withFrame: self.view.frame, 57 andColors: [.yellow, .orange]) 58 //將檢視物件新增到根檢視 59 self.view.addSubview(view) 60 } 61 62 //新增一個方法,獲得圖片的主題色 63 func colorFromeImage() 64 { 65 //讀取專案中的一張圖片素材 66 let image = UIImage(named: "Pic") 67 //初始化一個影象檢視,用來顯示圖片素材 68 let imageView = UIImageView(frame: CGRect(x: 0, 69 y: 20, 70 width: 320, 71 height: 220)) 72 //將圖片素材賦予影象檢視 73 imageView.image = image 74 //將影象檢視新增到根檢視 75 self.view.addSubview(imageView) 76 77 //從影象檢視中獲得一份扁平化的配色方案 78 //let colors = ColorsFromImage(image!, withFlatScheme: true) 79 80 //從影象檢視中獲得一份非扁平化的配色方案 81 let colors = ColorsFromImage(image!, withFlatScheme: false) 82 83 //初始化一個數值為0的變數 84 var dy = 0 85 //對配色方案中的顏色進行遍歷,從而通過相同數量的檢視 86 //顯示配色方案中的各種顏色。 87 for color in colors 88 { 89 //初始化一個指定顯示區域的檢視 90 dy += 40 91 let frame = CGRect(x: 20, y: 220+dy, width: 280, height: 40) 92 let view = UIView(frame: frame) 93 //設定檢視的背景顏色,為配色方案中的顏色 94 view.backgroundColor = color 95 //並將檢視新增到根檢視中 96 self.view.addSubview(view) 97 } 98 99 //獲得影象中的平均顏色 100 let averageColor = UIColor(averageColorFrom: image!) 101 //初始化另一個檢視物件,用來顯示平均顏色 102 let view = UIView(frame: CGRect(x: 20, y: 500, width: 280, height: 40)) 103 //設定檢視的背景顏色為平均顏色 104 view.backgroundColor = averageColor 105 //將檢視新增到根檢視中 106 self.view.addSubview(view) 107 } 108 109 override func didReceiveMemoryWarning() { 110 super.didReceiveMemoryWarning() 111 // Dispose of any resources that can be recreated. 112 } 113 }