2017-01-10 38 views
0

我声明UIColors在扩展名:UIColor文件,但我不断地得到像“实例成员'红'错误不能用于类型'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 
    ) 
} 
} 

斯威夫特文件,我想用一种颜色。

var color: UIColor = UIColor.red { 
    didSet { 
     setup() 
    } 
} 

回答

2

您在具有相同名称的类变量分机冲突添加的red,​​和blue属性名称。重命名您的扩展中的属性。

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

而你的执行red,​​和blue可能会崩溃。假定CGColor总是有3个组件,并且您认为它是RGB颜色。这两种情况都不是真的。

+0

为了使它完成,你应该提到他的白色方法也没用,因为UIColor已经有了一个特定于这个目的的初始化函数init(white:alpha:)'https://developer.apple.com/reference/uikit/ uicolor/1621944-init –

+1

@LeoDabus我一开始也认为,但后来我仔细看了看他们的“白色”方法。这绝对是完全不同的。这一个正在改变当前的颜色,而不仅仅是创造一片灰色。 – rmaddy

相关问题