【问题标题】:Converting Int to CGFloat results in 0.000000将 Int 转换为 CGFloat 结果为 0.000000
【发布时间】:2014-08-02 19:34:53
【问题描述】:

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

【问题讨论】:

    标签: ios swift int uicolor cgfloat


    【解决方案1】:

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

    【讨论】:

    • 也许 CGFloat 没有在变量参数列表上正确传递。 - 这似乎值得在 Apple 报告错误。
    • 我不会感到惊讶; beta 4 有很多 CGFloat 变化。是的,提交一个雷达。
    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    相关资源
    最近更新 更多