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

时间:2017-01-10 00:40:01

标签: ios swift swift3

我在扩展程序中声明UIColors:UIColor文件,但我一直收到错误,例如"实例成员' red'当我在扩展文件中声明它时,不能在类型' UIColor'上使用它。我将列出错误的图片和下面的代码。

Error image

扩展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()
    }
}

1 个答案:

答案 0 :(得分:2)

您在扩展程序中添加的redgreenblue属性名称与相同名称的类变量冲突。重命名扩展程序中的属性。

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

redgreenblue的实施可能会崩溃。您假设CGColor总是有3个组件,并且您认为它是RGB颜色。这两种情况都不是真的。