将Int转换为CGFloat会产生0.000000

时间:2014-08-02 19:34:54

标签: ios swift int uicolor cgfloat

我尝试从数组中取Int个值并将其转换为CGFloat s,以便我可以从红色,绿色和蓝色值创建UIColor。很简单吧?

我可以成功地从数组中获取Int值,但是当我尝试转换为CGFloat时,结果为0.000000。这是为什么?

let colorArray = NSUserDefaults.standardUserDefaults().arrayForKey("colors")
let redValue = colorArray[0] as Int
let greenValue = colorArray[1] as Int
let blueValue = colorArray[2] as Int
NSLog("%i", redValue) //prints 255
NSLog("%i", greenValue) //prints 250
NSLog("%i", blueValue) //prints 150
let redFloat = CGFloat(redValue) / 255.0
let greenFloat = CGFloat(greenValue) / 255.0
let blueFloat = CGFloat(blueValue) / 255.0
NSLog("%f", redFloat) //prints 0.000000
let color = UIColor(red: redFloat, green: greenFloat, blue: blueFloat, alpha: 1)

如果我没有除以255.0,我会得到相同的结果 - 0.我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

这似乎是基础字符串格式化和CGFloat转换的一个奇怪问题。 NSString(format:_:)出现同样的问题。如果您使用NSLog("%f", redFloat.native)print("\(redFloat)")或仅使用print(redFloat),则无问题。