从类方法或类型方法SWIFT UIColor

Kha*_*inn 1 methods objective-c uicolor swift

在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];
}
Run Code Online (Sandbox Code Playgroud)

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

cell.backgroundColor = [Helpers getFromRGB:216 green:38 blue:56]
Run Code Online (Sandbox Code Playgroud)

在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
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我调用Type方法时,我得到了这样的错误.我应该怎么做? 在此输入图像描述

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

在此输入图像描述

在此输入图像描述

jtb*_*des 5

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

class func colorFromRGB(#red: Int, green...
Run Code Online (Sandbox Code Playgroud)

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

extension UIColor {
    convenience init(red: CGFloat, green: CGFloat, blue: CGFloat) {
        self.init(red: red, green: green, blue: blue, alpha: 1)
    }
}
Run Code Online (Sandbox Code Playgroud)

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