使用swift时,额外参数绿色调用

时间:2015-04-06 05:44:05

标签: ios xcode string swift uicolor

如何用swift完成这个类似的代码。但是,当我尝试使用swift完成时,它会在调用

中给出错误额外参数green
+(UIColor *)colorWithValues:(NSString *)colorValues{
NSArray *colorComponents = [colorValues componentsSeparatedByString:@","];

CGFloat red = [[colorComponents objectAtIndex:0] floatValue]/255.0;
CGFloat green = [[colorComponents objectAtIndex:1] floatValue]/255.0;
CGFloat blue = [[colorComponents objectAtIndex:2] floatValue]/255.0;
CGFloat alpha = [[colorComponents objectAtIndex:3] floatValue];
UIColor *color = [[UIColor alloc]initWithRed:red 
                                       green:green 
                                        blue:blue 
                                       alpha:alpha];
//UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
return color;
}

bgView.backgoroundColor = [[self class]colorWithValues:@"155,124,144,1"];

    func colorWithValues(#colorToString : String) -> (UIColor) {

    var colorString = colorToString.componentsSeparatedByString(",")
    let redColor : Float = Float(colorString[0].toInt()!)/255.0
    let greenColor : Float = Float(colorString[1].toInt()!)/255.0
    let blueColor: Float = Float(colorString[2].toInt()!)/255.0
    let colorAlpha: Float = Float(colorString[3].toInt()!)

    var colorValue : UIColor! = UIColor(red:CGFloat(redColor), green:CGFloat(greenColor), blue:CGFloat(blueColor), alpha: colorAlpha)
    return colorValue
}

2 个答案:

答案 0 :(得分:2)

我可以看到你忘了在alpha

中包裹CGFloat
var colorValue : UIColor! = UIColor(red:CGFloat(redColor), green:CGFloat(greenColor), 
blue:CGFloat(blueColor), alpha: colorAlpha)
                                ^^^^^^^^^^ here

导致问题,将其更改为

var colorValue : UIColor! = UIColor(red: CGFloat(redColor), green: CGFloat(greenColor), 
blue: CGFloat(blueColor), alpha: CGFloat(colorAlpha))

答案 1 :(得分:1)

您应该将Float值更改为CGFloat

let redColor : CGFloat = CGFloat(colorString[0].toInt()!)/255.0
let greenColor : CGFloat = CGFloat(colorString[1].toInt()!)/255.0
let blueColor: CGFloat = CGFloat(colorString[2].toInt()!)/255.0
let colorAlpha: CGFloat = CGFloat(colorString[3].toInt()!)

这样您就可以传递值而无需转换它们,这可以防止忘记将alpha值转换为CGFloat等问题。