0

赤、緑、青の値からを作成できるようにInt、配列から値を取得して に変換しようとしています。簡単ですよね?CGFloatUIColor

配列から値を正常に取得でき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)または、print("\(redFloat)")または単に使用する場合print(redFloat)は問題ありません。

于 2014-08-02T19:43:38.807 に答える