0

我正在尝试Int从 Array 中获取值并将它们转换为CGFloats ,以便我可以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。我在这里做错了什么?

4

1 回答 1

3

这似乎是 Foundation 字符串格式化和从CGFloat. 同样的问题发生在NSString(format:_:). 如果您使用NSLog("%f", redFloat.native)orprint("\(redFloat)")或只是print(redFloat)没有问题。

于 2014-08-02T19:43:38.807 回答