这是使用 Swift 特性(扩展、计算属性和元组)在几行代码中完成相同事情的好方法。
extension UIColor {
var hsba: (h: CGFloat, s: CGFloat, b: CGFloat, a: CGFloat) {
var hsba: (h: CGFloat, s: CGFloat, b: CGFloat, a: CGFloat) = (0, 0, 0, 0)
self.getHue(&(hsba.h), saturation: &(hsba.s), brightness: &(hsba.b), alpha: &(hsba.a))
return hsba
}
}
Swift 3.2 / 4 小更新
Swift 3.2 / 4 强制使用之前的代码触发了一个新警告,因为您hsba
在同一次调用中多次修改变量getHue
同时访问参数‘hsba’,但修改需要独占访问;考虑复制到局部变量。
extension UIColor {
var hsba: (h: CGFloat, s: CGFloat, b: CGFloat, a: CGFloat) {
var h: CGFloat = 0, s: CGFloat = 0, b: CGFloat = 0, a: CGFloat = 0
self.getHue(&h, saturation: &s, brightness: &b, alpha: &a)
return (h: h, s: s, b: b, a: a)
}
}