我在扩展程序中声明UIColors:UIColor文件,但我一直收到错误,例如"实例成员' red'当我在扩展文件中声明它时,不能在类型' UIColor'上使用它。我将列出错误的图片和下面的代码。
扩展UIColor文件
import Foundation
import UIKit
extension UIColor {
var red: CGFloat {
get {
let components = self.cgColor.components
return components![0]
}
}
var green: CGFloat {
get {
let components = self.cgColor.components
return components![1]
}
}
var blue: CGFloat {
get {
let components = self.cgColor.components
return components![2]
}
}
var alpha: CGFloat {
get {
return self.cgColor.alpha
}
}
func alpha(_ alpha: CGFloat) -> UIColor {
return UIColor(red: self.red, green: self.green, blue: self.blue, alpha: alpha)
}
func white(_ scale: CGFloat) -> UIColor {
return UIColor(
red: self.red + (1.0 - self.red) * scale,
green: self.green + (1.0 - self.green) * scale,
blue: self.blue + (1.0 - self.blue) * scale,
alpha: 1.0
)
}
}
Swift文件我想使用其中一种颜色。
var color: UIColor = UIColor.red {
didSet {
setup()
}
}
答案 0 :(得分:2)
您在扩展程序中添加的red
,green
和blue
属性名称与相同名称的类变量冲突。重命名扩展程序中的属性。
仅供参考 - 您的扩展程序中不需要使用alpha
方法。 UIColor
已经提供了相同的方法(名为withAlphaComponent
)。
您red
,green
和blue
的实施可能会崩溃。您假设CGColor
总是有3个组件,并且您认为它是RGB颜色。这两种情况都不是真的。