[Swift通天遁地]五、高级扩展-(10)整形、浮点、数组、字典、字符串、点、颜色、图像类的实用扩展

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10253443.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

目录:[Swift]通天遁地Swift

本文将演示另一款强大的第三方扩展类库。

首先确保在项目中已经安装了所需的第三方库。

点击【Podfile】,查看安装配置文件。

 1 platform :ios, '12.0'
 2 use_frameworks!
 3 
 4 target 'DemoApp' do
 5     source 'https://github.com/CocoaPods/Specs.git'
 6     pod 'Alexandria'
 7     pod 'Alexandria/Core'
 8     pod 'Alexandria/StoreKit'
 9     pod 'Alexandria/ImageEffects'
10 end

根据配置文件中的相关配置,安装第三方库。

然后点击打开【DemoApp.xcworkspace】项目文件。

在项目导航区,打开视图控制器的代码文件【ViewController.swift】

  1 import UIKit
  2 //在当前的类文件中,引入已经安装的第三方类库
  3 import Alexandria
  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         IntExample()
 12         //浮点类型的扩展
 13         floatExamples()
 14         //字符串类型的扩展
 15         stringExample()
 16         //图像类型的扩展方法
 17         uiimageExample()
 18         //颜色类型的扩展方法
 19         uicolorExample()
 20         //对数组类型的扩展
 21         arrayExamples()
 22         //对字典类型的扩展
 23         dictionaryExample()
 24         //对点类型的扩展
 25         CGPointExample()
 26     }
 27     
 28     //整形类型的扩展
 29     func IntExample()
 30     {
 31         //奇数
 32         print("2.isOdd:(2.isOdd)")
 33         //偶数
 34         print("2.isEven:(2.isEven)")
 35         //正数
 36         print("2.isPositive:(2.isPositive)")
 37         //负数
 38         print("2.isNegative:(2.isNegative)")
 39         
 40         //通过正数快速创建一个指定次数的循环语句
 41         3.repeat({_ in
 42             print("Repeat in a block")
 43         })
 44         
 45         //通过整形的类方法,快速获得指定区间的随机正数
 46         print("Int.random(min: 1, max: 10):(Int.random(min: 1, max: 10))")
 47         print("Int.random(min: 1, max: 10):(Int.random(min: 1, max: 10))")
 48     }
 49     
 50     //浮点类型的扩展
 51     func floatExamples()
 52     {
 53         //快速获得指定区间的随机单精度浮点数
 54         print("CGFloat.random(min:1, max:2):(CGFloat.random(min:1, max:2))")
 55         print("CGFloat.random(min:1, max:2):(CGFloat.random(min:1, max:2))")
 56         print("CGFloat.random(min:1, max:2):(CGFloat.random(min:1, max:2))")
 57         
 58          //快速获得指定区间的随机浮点数
 59         print("Double.random(min: 1, max: 2):(Double.random(min: 1, max: 2))")
 60         print("Float.random(min: 1, max: 2):(Float.random(min: 1, max: 2))")
 61         
 62         //初始化一个浮点类型的常量
 63         let floatNum: CGFloat = 12.345678
 64         //获得一个整数
 65         print("floatNum.rounded():(floatNum.rounded())")
 66         //指定小数点的位置
 67         print("floatNum.rounded(places: 2):(floatNum.rounded(places: 2))")
 68         print("floatNum.rounded(places: 3):(floatNum.rounded(places: 3))")
 69         
 70         //设置小数点的位置时,向最近或更大的方向进行舍入
 71         print("(5.2).rounded(.toNearestOrEven):((5.2).rounded(.toNearestOrEven))")
 72         print("(5.5).rounded(.toNearestOrEven):((5.5).rounded(.toNearestOrEven))")
 73         print("(4.2).rounded(.toNearestOrEven):((4.2).rounded(.toNearestOrEven))")
 74         
 75         //设置小数点的位置时,向最近或远离0的方向进行舍入
 76         print("(5.2).rounded(.toNearestOrAwayFromZero):((5.2).rounded(.toNearestOrAwayFromZero))")
 77         print("(5.5).rounded(.toNearestOrAwayFromZero):((5.5).rounded(.toNearestOrAwayFromZero))")
 78         print("(-5.2).rounded(.toNearestOrAwayFromZero):((-5.2).rounded(.toNearestOrAwayFromZero))")
 79         print("(-5.5).rounded(.toNearestOrAwayFromZero):((-5.5).rounded(.toNearestOrAwayFromZero))")
 80         
 81         //设置小数点的位置时,向较大的方向进行舍入
 82         print("(5.2).rounded(.up):((5.2).rounded(.up))")
 83         print("(5.5).rounded(.up):((5.5).rounded(.up))")
 84         print("(-5.2).rounded(.up):((-5.2).rounded(.up))")
 85         print("(-5.5).rounded(.up):((-5.5).rounded(.up))")
 86         
 87         //设置小数点的位置时,向远离0的方向进行舍入
 88         print("(5.2).rounded(.awayFromZero):((5.2).rounded(.awayFromZero))")
 89         print("(5.5).rounded(.awayFromZero):((5.5).rounded(.awayFromZero))")
 90         print("(-5.2).rounded(.awayFromZero):((-5.2).rounded(.awayFromZero))")
 91         print("(-5.5).rounded(.awayFromZero):((-5.5).rounded(.awayFromZero))")
 92     }
 93     
 94     //字符串类型的扩展
 95     func stringExample()
 96     {
 97         //驼峰命名格式
 98         print("os version".camelCased)
 99         //字符串内容是否为数字
100         print("123".isNumeric)
101         //字符串内容是否为数字
102         print("123abc".isNumeric)
103         //使用正则表达式,将字符串中的内容替换为星号
104         print("hello".regex("[aeiou]", "*"))
105         //使用正则表达式,将字符串的两侧添加一个<>
106         print("hello".regex("([aeiou])", "<$1>"))
107         //将字符串截取至指定的位置
108         print("hello there".truncated(to: 5))
109         //将字符串截取至指定的位置,截取的内容被替换为省略号
110         print("hello there".truncated(to: 5, trailing: "..."))
111     }
112     
113     //图像类型的扩展方法
114     func uiimageExample()
115     {
116         //从项目中读取一张图片资源
117         let image = UIImage(named: "yammi_star")
118 
119         //应用高亮效果
120         let newImage = image?.applyLightEffect()
121         //超级亮光效果
122         let newImage = image?.applyExtraLightEffect()
123         //变暗效果
124         let newImage = image?.applyDarkEffect()
125         //给图片应用着色效果,并设置颜色为紫色
126         let newImage = image?.applyTintEffect(withColor:UIColor.purple)
127         //给图片应用模糊效果,并设置模糊的半径、着色、饱和度比率等参数
128         let newImage = image?.applyBlur(withRadius: 4, tintColor: nil, saturationDeltaFactor: 1.5)
129 
130         //着色效果,设置颜色为洋红色
131         let newImage = image?.tinted(UIColor.magenta)
132         //将图片快速缩放到指定的尺寸
133         let newImage = image?.resized( 100, height: 100)
134         //将图片快速缩放到指定的尺寸,同时不保持宽度的比例
135         let newImage = image?.resized( 200, height: 100, maintainAspectRatio: false)
136         //将图片缩放到1.5倍的大小 
137         let newImage = image?.scaled(by: 1.5)
138 
139         //将图片缩放到1.5倍的大小,并设置图片的朝向为向下,共有八种方向可以选择
140         let newImage = image?.scaled(by: 1.5, withOrientation: UIImage.Orientation.right)
141         //初始化一个图像视图
142         let imageView = UIImageView(image: newImage)
143         //将图像视图放置在根视图的中心位置
144         imageView.center = CGPoint(x: self.view.bounds.width/2, y: self.view.bounds.height/2)
145         //将图像视图对象添加到根视图
146         self.view.addSubview(imageView)
147     }
148     
149     //颜色类型的扩展方法
150     func uicolorExample()
151     {
152         //初始化一个视图对象,用来显示自定义的颜色
153         let view = UIView(frame: CGRect(x: 20, y: 60,  280, height: 280))
154         //并将视图对象添加到根视图
155         self.view.addSubview(view)
156         
157         //初始化一个颜色对象,并设置颜色的值为0.75
158         let color = UIColor(hex: 0x00ff00, alpha: 0.75)
159         //初始化另一个颜色对象
160         let color2 = UIColor(hue: 0.5, //色相
161                              saturation: 0.5,//饱和度
162                              lightness: 0.5, //亮度
163                              alpha: 1.0)//不透明度
164         //初始化一个常用于印刷的颜色对象
165         let color3 = UIColor(cyan: 0.25,//青色
166                              magenta: 0.46,//洋红
167                              yellow: 0.39,//黄色
168                              key: 0, //黑色
169                              alpha: 1.0)//不透明度
170         //初始化一个基于三原色的颜色对象
171         let color4 = UIColor(red: 0, //
172                              green: 155, //绿
173                              blue: 223, //
174                              alpha: 1.0)//不透明度
175         //创建一个颜色对象,并设置颜色对象的不透明度为0.2
176         let color5 = color4.alpha(0.2)
177         //从一个颜色对象创建另一个颜色对象,并提高颜色的亮度
178         let color6 = color2.lightened(by: 0.4)
179         //从一个颜色对象创建另一个颜色对象,并降低颜色的亮度
180         let color7 = color2.darkened(by: 0.4)
181         //创建一个随机的颜色
182         let color8 = UIColor.random
183         //输出随机颜色的十六进制的值
184         print("color8.hexString:(color8.hexString)")
185         //依次输出该颜色在四种色彩模式下的值
186         print("color8.rgba:(color8.rgba)")
187         print("color8.hsl:(color8.hsl)")
188         print("color8.hsb:(color8.hsb)")
189         print("color8.cmyk:(color8.cmyk)")
190 
191         //设置视图的背景颜色为随机颜色
192         view.backgroundColor = color8
193     }
194     
195     //对数组类型的扩展
196     func arrayExamples()
197     {
198         //初始化一个数组
199         let array1 = [1, 2, 3, 4, 5]
200         
201         //将数组的前面两个元素,移动到数组的尾部
202         print("array1.rotated(by: 2):(array1.rotated(by: 2))")
203         //将数组的后面两个元素,移动到数组的头部
204         print("array1.rotated(by: -2):(array1.rotated(by: -2))")
205         
206         //初始化一个数组
207         let array2 = [1,2,3]
208         //获得并输出在数字3的前方的元素
209         print("array2.before(3):(array2.before(3))")
210         //获得并输出在数字2的前方的元素
211         print("array2.before(2):(array2.before(2))")
212         //获得并输出在数字1的前方的元素
213         print("array2.before(1):(array2.before(1))")
214         
215         //获得并输出在数字后方的元素
216         print("array2.after(1):(array2.after(1))")
217         print("array2.after(2):(array2.after(2))")
218         print("array2.after(3):(array2.after(3))")
219         
220         //初始化一个数组
221         let array3 = [1,2,3,3,2]
222         //获得重复元素后的结果
223         print("array3.unique():(array3.unique()))")
224     }
225     
226     //对字典类型的扩展
227     func dictionaryExample()
228     {
229         //初始化一个字典对象
230         let master = ["Name":"Jerry", "Age":30, "City":"BeiJing"] as [String : Any]
231         //初始化另一个字典对象
232         let pet = ["PetName":"Carl", "PetAge":2] as [String : Any]
233         //合并字典对象
234         let unionDict = master.union(pet)
235         //输出合并后的字典对象
236         print("unionDict:(unionDict)")
237     }
238     
239     //对点类型的扩展
240     func CGPointExample()
241     {
242         //初始化两个点对象
243         let firstPoint = CGPoint(x: 100, y: 100)
244         let secondPoint = CGPoint(x: 200, y: 200)
245         
246         //两点之间的距离
247         print("firstPoint.distance(to: secondPoint):(firstPoint.distance(to: secondPoint))")
248         //两个点对象相加
249         print("firstPoint + secondPoint:(firstPoint + secondPoint)")
250         //两个点对象相减
251         print("firstPoint - secondPoint:(firstPoint - secondPoint)")
252         //两个点对象相乘
253         print("firstPoint * secondPoint:(firstPoint * secondPoint)")
254         //两个点对象相乘
255         print("firstPoint / secondPoint:(firstPoint / secondPoint)")
256     }
257 
258     override func didReceiveMemoryWarning() {
259         super.didReceiveMemoryWarning()
260         // Dispose of any resources that can be recreated.
261     }
262 }
原文地址:https://www.cnblogs.com/strengthen/p/10253443.html