从类方法或类型方法SWIFT UIColor

时间:2014-07-13 06:03:37

标签: objective-c methods swift uicolor

在objective-c中,我们可以像这样编写用类方法调用颜色。

+ (UIColor *)getFromRGB:(int)red green:(int)green blue:(int)blue
{
    float r = (float)red / 255;
    float g = (float)green / 255;
    float b = (float)blue / 255;
    return [UIColor colorWithRed:r green:g blue:b alpha:1];
}

然后,我们可以这样打电话。

cell.backgroundColor = [Helpers getFromRGB:216 green:38 blue:56]

在Swift中,我从中读取并称之为Type方法。 https://developer.apple.com/library/prerelease/mac/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html

所以,我试着这样写。

class Helper
{
    class func colorFromRGB (red: Int, green: Int, blue: Int) -> UIColor
    {
        var color: UIColor = UIColor(red: CGFloat(red/255), green: CGFloat(green/255), blue: CGFloat(blue/255), alpha: CGFloat(1.0))
        return color
    }
}

但是当我调用Type方法时,我得到了这样的错误。我应该怎么做? enter image description here

修改:也不能像那样打电话。之后,根据xCode自动建议,我没有像这样的红色参数这样写。然后,我可以编译,但我只能得到那样的黑色。我认为调用方法和颜色信息也错了。我该怎么办?

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:5)

如果要对所有参数使用标签,可以使用" red red: ..."指定第一个参数的标签。或只是" #red: ...":

class func colorFromRGB(#red: Int, green...

或者您可以考虑使用扩展程序来定义自己的便利初始化程序:

extension UIColor {
    convenience init(red: CGFloat, green: CGFloat, blue: CGFloat) {
        self.init(red: red, green: green, blue: blue, alpha: 1)
    }
}

然后你可以直接拨打UIColor(red: ..., green: ..., blue: ...)

答案 1 :(得分:0)

Swift强制为所有参数输入参数名称(参数标签)。然后你必须写这样的东西。

Helper.colorFromRGB(red: 3, green: 3, blue: 3)

这与类型方法或UIColor无关。