在 Swift 中快速创建与访问自定义颜色
在 Swift 中使用 UIColor 定义颜色是件麻烦事儿,你需要在初始化函数中给出 RGB 以及透明度的数值:
init(red: CGFloat, |
我们希望可以像 UIColor.black
这样快速访问我们自定义的颜色。extension UIColor
可以帮助我们实现这一功能。
什么是 extension?
extension 可以为一个类型添加新的功能,但不能重写已有的功能。
extension 可以完成:
- 添加计算属性(computed properties)
- 添加方法(methods)
- 添加初始化方法(initializers)
- 添加附属脚本(subscripts)
- 添加并使用嵌套类型(nested types)
- 遵循并实现某一协议(conform protocol)
创建一个 extension
我们可以在项目中创建一个 Extensions 文件夹来存放 extension 文件。
选择 File > New > File … > iOS > Swift File, 输入名称后创建一个文件。
文件名可以根据「扩展类名 + 功能介绍」的格式来取。例如为 UIColor
添加自定义颜色,文件名就可以定为 UIColorCustomColor.swift。
通过 extension UIColor 自定义颜色
定义新增初始化方法
使用 convenience
关键字新增一个初始化 init
方法。
该方法接收三个 Int
类型参数:
- red:红色光值(R)
- green:绿色光值(G)
- blue:蓝色光值(B)
而后根据这三个参数初始化 UIColor
。
import UIKit |
定义自定义颜色结构体
使用 struct
定义一个名为 CustomColor
的颜色结构体,用于存放所有自定义颜色。
该结构体中又定义了不同颜色的结构体,例如 struct Black
,struct Gray
,用于存放各自颜色类别下的具体颜色。
大致就是这个结构:
- 自定义颜色
- 黑色
- 墨水黑
- 非洲黑
- 乌漆麻黑
- ……
- 灰色
- 烟灰
- 天灰灰
- ……
- 紫色
- 基佬紫
- ……
- 黑色
import UIKit |
调用
上面已经定义好了一个自定义颜色结构体,调用方式如下:
bottomLine.backgroundColor = UIColor.CustomColor.Gray.LightGray.cgColor |
参考资料
- 本文链接:http://jalan.space/2019/08/24/2019/swift-extend-uicolor/
- 版权声明:本博客所有文章除特别声明外,均采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。
分享