Objective c 来自类方法或类型方法的快速UIColor

Objective c 来自类方法或类型方法的快速UIColor,objective-c,methods,swift,uicolor,Objective C,Methods,Swift,Uicolor,在objective-c中,我们可以这样编写,用类方法调用color + (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

在objective-c中,我们可以这样编写,用类方法调用color

+ (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中,我阅读了这篇文章,它被称为类型方法。

所以,我试着这样写

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
    }
}
Helper.colorFromRGB(red: 3, green: 3, blue: 3)
但是当我调用那个类型方法时,我得到了这样的错误。我该怎么办?

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


Swift强制为所有参数放置参数名称和参数标签。那你就得写这样的东西

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
    }
}
Helper.colorFromRGB(red: 3, green: 3, blue: 3)

这与type-method或UIColor无关。

Swift强制为所有参数设置参数名和参数标签。那你就得写这样的东西

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
    }
}
Helper.colorFromRGB(red: 3, green: 3, blue: 3)

这与type method或UIColor无关。

如果要为所有参数使用标签,可以用红色指定第一个参数的标签:。。。或者只是红色:…:

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

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

然后可以直接调用UIColorred:…、green:…、blue:…

如果要为所有参数使用标签,可以使用红色指定第一个参数的标签:。。。或者只是红色:…:

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

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

然后您可以直接呼叫UIColorred:…、green:…、blue:…

谢谢。你能检查一下修改后的问题吗?我试着那样打电话,但这给了我错误。谢谢。你能检查一下修改后的问题吗?我试着那样打电话,但这给了我错误。谢谢。我想我可以打电话提出你的建议。但我只有我的颜色值为黑色,因为我的划分。它给出了0.000000。我该怎么做才能正确调用我的方法?@KhantThuLinn为什么不直接使用CGFloat而不是Int?哦……我改为CGFloat而不是Int,现在一切都好了。谢谢你的帮助。我不知道我不能使用Int和convert。你可以转换,但你需要使用CGFloatred/255而不是CGFloatred/255。你看到我新编辑的答案了吗?我认为一个扩展更适合你的助手功能…是的。我想我最好使用扩展。谢谢:谢谢。我想我可以打电话提出你的建议。但我只有我的颜色值为黑色,因为我的划分。它给出了0.000000。我该怎么做才能正确调用我的方法?@KhantThuLinn为什么不直接使用CGFloat而不是Int?哦……我改为CGFloat而不是Int,现在一切都好了。谢谢你的帮助。我不知道我不能使用Int和convert。你可以转换,但你需要使用CGFloatred/255而不是CGFloatred/255。你看到我新编辑的答案了吗?我认为一个扩展更适合你的助手功能…是的。我想我最好使用扩展。谢谢: