Ios 实例成员已声明时不能使用

Ios 实例成员已声明时不能使用,ios,swift,swift3,Ios,Swift,Swift3,我在扩展名:UIColor文件中声明UIColors,但我不断收到错误,如“实例成员'red'不能用于类型'UIColor',当我在扩展名文件中声明它时。我将在下面列出错误图片和代码 扩展UIColor文件 import Foundation import UIKit extension UIColor { var red: CGFloat { get { let components = self.cgColor.components retu

我在扩展名:UIColor文件中声明UIColors,但我不断收到错误,如“实例成员'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()
    }
}

在扩展中添加的
红色
绿色
蓝色
属性名称与同名的类变量冲突。请重命名扩展中的属性

仅供参考-扩展中不需要使用
alpha
方法。
UIColor
已经提供了相同的方法(名为
withAlphaComponent


您的
红色
绿色
蓝色
的实现可能会崩溃。您假设
CGColor
始终有3个组件,并且您假设它是RGB颜色。这两种情况都不总是正确的。

您在扩展名中添加的
红色
绿色
蓝色
属性名称ict具有相同名称的类变量。重命名扩展中的属性

仅供参考-扩展中不需要使用
alpha
方法。
UIColor
已经提供了相同的方法(名为
withAlphaComponent


而您的
红色
绿色
蓝色
的实现可能会崩溃。您假设
CGColor
始终有3个组件,并且您假设它是RGB颜色。这两种情况都不总是正确的。

为了使其完整,您应该提到他的白色方法也是无用的,因为UIColor已经有了一个初始值设定项特定于该目的
init(白色:alpha:)
@LeoDabus起初我也这么认为,但后来我仔细研究了他们的
白色方法。这肯定是完全不同的。这一方法正在改变当前颜色,而不仅仅是创建灰色阴影。为了使其完整,你应该提一下,他的白色方法也没用,因为UIColor已经为该pu指定了一个初始值设定项rpose
init(white:alpha:)
@LeoDabus起初我也这么认为,但后来我仔细研究了他们的
white
方法。这肯定是完全不同的。这一方法正在改变当前的颜色,而不仅仅是产生灰色阴影。