我正在尝试将我的rgb颜色转换为十六进制值。不幸的是,它总是返回000000。这是我尝试过的代码:
let red = CGFloat(drand48())
let green = CGFloat(drand48())
let blue = CGFloat(drand48())
let hexValue = String(format:"%02X", red) + String(format:"%02X", green) + String(format:"%02X", blue)
答案 0 :(得分:4)
这是生成3个随机数并将其转换为十六进制字符串的更好方法:
let red = Int.random(in: 0...255)
let green = Int.random(in: 0...255)
let blue = Int.random(in: 0...255)
let hex = String(format:"%02X%02X%02X", red, green, blue)
您的代码无效的原因是您的数字CGFloat
在0.0到1.0的范围内。但是您的字符串格式会将它们视为Int
值。
除此之外,drand48
的使用要求您先将它们作为种子。