Ios 实例成员已声明时不能使用
我在扩展名:UIColor文件中声明UIColors,但我不断收到错误,如“实例成员'red'不能用于类型'UIColor',当我在扩展名文件中声明它时。我将在下面列出错误图片和代码 扩展UIColor文件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
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指定了一个初始值设定项rposeinit(white:alpha:)
@LeoDabus起初我也这么认为,但后来我仔细研究了他们的white
方法。这肯定是完全不同的。这一方法正在改变当前的颜色,而不仅仅是产生灰色阴影。