我在扩展名中声明 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()
}
}
最佳答案
您在扩展中添加的 red
、green
和 blue
属性名称与同名的类变量冲突。重命名扩展中的属性。
仅供引用 - 您的扩展中不需要 alpha
方法。 UIColor
已经提供了相同的方法(名为 withAlphaComponent
)。
red
、green
和 blue
的实现可能会崩溃。您假设 CGColor
总是有 3 个分量,并且您假设它是 RGB 颜色。两种情况都不总是正确的。
关于ios - 实例成员已声明时不能使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41559409/