首先将UIColor转换为CGColor,再使用CGColorGetComponents方法可获取颜色一个长度为4非安全数组,取数组中各部分即可返回其ARGB值,但是值得注意的是如果UIColor使用的是UIColor(white, alpha)这个构造函数构建的,那么只会返回长度为2的数组,因此需要另使用CGColorGetNumberOfComponents来获取其长度。
代码如下:
extension UIColor {
func r() -> CGFloat {
return CGColorGetComponents(self.CGColor)[0];
}
func g() -> CGFloat {
var count = CGColorGetNumberOfComponents(self.CGColor);
if (count == 2) {
return CGColorGetComponents(self.CGColor)[0];
} else {
return CGColorGetComponents(self.CGColor)[1];
}
}
func b() -> CGFloat {
var count = CGColorGetNumberOfComponents(self.CGColor);
if (count == 2) {
return CGColorGetComponents(self.CGColor)[0];
} else {
return CGColorGetComponents(self.CGColor)[2];
}
}
func a() -> CGFloat {
var count = CGColorGetNumberOfComponents(self.CGColor);
return CGColorGetComponents(self.CGColor)[count - 1];
}
}