使用swift时在调用时额外的参数为绿色

问题描述:

如何使用swift完成这个类似的代码。然而,当我试图迅速完成,这是给一个错误额外的参数​​呼叫使用swift时在调用时额外的参数为绿色

+(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 
} 
+0

FUNC colorWithValues(#colorToString:字符串) - >(的UIColor)不应该返回类型是(UIColor *) – toofani 2015-04-06 05:56:27

,我可以看到你忘了包alphaCGFloat

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)) 
+0

您的答案帮助。只是一个问题,我已经写在func中的助手类.so我如何访问这个助手类并调用这个func – Nassif 2015-04-06 06:42:46

+0

你可以在调用其他函数时调用这个函数。 http://stackoverflow.com/questions/25528640/how-i-can-call-functions-from-other-class-swift-xcode – 2015-04-06 07:01:56

你应该改变你的FloatCGFloat

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等问题。

+0

像这样alpha将始终为1或0 – 2015-04-06 06:26:11