• [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 }
  • 相关阅读:
    何为受控组件(controlled component)
    (组件的)状态(state)和属性(props)之间有何不同
    类组件(Class component)和函数式组件(Functional component)之间有何不同
    [翻译] FSLineChart
    [翻译] DXPopover
    [翻译] LTInfiniteScrollView
    设计模式
    [翻译] LLSimpleCamera
    [翻译] VLDContextSheet
    将Model对象转换成json文本或者json二进制文件
  • 原文地址:https://www.cnblogs.com/strengthen/p/10253443.html
Copyright © 2020-2023  润新知