我试图在雪碧工具包中生成一个随机颜色的函数。下面是我使用的代码:
var hue = Float(arc4random() % 256) / 256.0;
var saturation = Float(arc4random() % 128) / 256.0 + 0.5;
var brightness = Float(arc4random() % 128) / 256.0 + 0.5;
self.color = UIColor(hue: hue, saturation: saturation, brightness: brightness, alpha: 1);在编译到iPad Air和iPhone 5S时,最后一行抛出此错误:
Could not find an overload for 'init' that accepts the supplied arguments我确信这与arc4random()在arm64上产生它不喜欢的东西有关。关于如何解决这个问题,有什么想法吗?
发布于 2014-06-24 03:15:15
UIColor(hue: saturation: brightness: alpha)的参数都是CGFloat类型的。您看到的问题是,根据体系结构的不同,CGFloat被别名为不同的类型。对于32位ARM (iPhone 4S和5),它在内部是一个Float,但对于arm64,它实际上是一个Double。如果您只使用CGFloat而不是Float来进行类型转换,那么它将运行得很好:
var hue = CGFloat(arc4random() % 256) / 256.0;
var saturation = CGFloat(arc4random() % 128) / 256.0 + 0.5;
var brightness = CGFloat(arc4random() % 128) / 256.0 + 0.5;
self.color = UIColor(hue: hue, saturation: saturation, brightness: brightness, alpha: 1);https://stackoverflow.com/questions/24377699
复制相似问题