[Swift通天遁地]五、高级扩展-(10)整形、浮点、数组、字典、字符串、点、颜色、图像类的实用扩展
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10253443.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
本文将演示另一款强大的第三方扩展类库。
首先确保在项目中已经安装了所需的第三方库。
点击【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(width: 100, height: 100) 134 //将图片快速缩放到指定的尺寸,同时不保持宽度的比例 135 let newImage = image?.resized(width: 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, width: 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 }