十六进制三联组合是一个六位的三字节十六进制数,用于 HTML、CSS、SVG 及其他计算应用程序中,用于表示颜色。这些字节代表颜色的红、绿和蓝三个元素。一个字节表示一个在 00 到 FF(十六进制表示)之间或 0 到 255(十进制表示)的范围内的数。这代表每个颜色元素的最小(0)到最大(255)的强度。因此,网络颜色指定了 True Color(24 位 RGB)颜色方案中的颜色。
在 iOS 中处理十六进制颜色存在问题,并且可能变得相当重复。我们一直期待 Apple 对此做些什么,但事实上并没有太多进展。
这就是我创建 Hex
的原因,这是一个简单的扩展,可以帮你解决问题。它与 Objective-C 和 Swift 都能很好地协同工作。
安装
pod 'Hex'
创建颜色
Swift
import Hex
let redColor = UIColor(hex: "FF0000")
Objective-C
@import Hex;
UIColor *color = [[UIColor alloc] initWithHex:@"FF0000"];
不透明度
由于HEX只支持RGB,因此不支持不透明度,但我们都想知道为什么它不应该支持?这就是为什么你可以在HEX字符串末尾追加不透明度百分比的原因。
一些示例
UIColor(hex: "#ff0000") => UIColor.red
UIColor(hex: "#ff000075") => UIColor.red.withAlphaComponent(0.75)
UIColor(hex: "#ff000050") => UIColor.red.withAlphaComponent(0.50)
检查颜色是否相等
当你从HEX字符串创建颜色时,使用isEqual
方法并不适用于UIColor,这是因为UIKit处理颜色的方式。这就是为什么在比较颜色之前,你必须将颜色转换为RGBSpace。幸运的是,Hex
包含一个辅助方法,这个方法帮助您检查颜色的相等性,这个方法在内部会规范化颜色空间。
let blackHex = UIColor(hex: "000000")
let black = UIColor.black
if blackHex.isEqualTo(black) {
// Do something
}
UIColor *blackHex = [[UIColor alloc] initWithHex: @"000000"];
UIColor *black = [UIColor blackColor];
if ([blackHex isEqualTo:black]) {
// Do something
}
变得精彩
如果有什么看起来很愚蠢,请创建一个友好和建设性的问题,得到您的反馈会非常棒。
祝您有个愉快的一天。
作者
Elvis Nuñez, @3lvis
许可证
Hex在MIT许可证下可用。更多信息请参阅LICENSE文件。