我尝试从数组中取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.我在这里做错了什么?
答案 0 :(得分:3)
这似乎是基础字符串格式化和CGFloat
转换的一个奇怪问题。 NSString(format:_:)
出现同样的问题。如果您使用NSLog("%f", redFloat.native)
或print("\(redFloat)")
或仅使用print(redFloat)
,则无问题。