首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >arc4random和arm64

arc4random和arm64
EN

Stack Overflow用户
提问于 2014-06-24 03:03:51
回答 1查看 682关注 0票数 2

我试图在雪碧工具包中生成一个随机颜色的函数。下面是我使用的代码:

代码语言:javascript
复制
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时,最后一行抛出此错误:

代码语言:javascript
复制
Could not find an overload for 'init' that accepts the supplied arguments

我确信这与arc4random()在arm64上产生它不喜欢的东西有关。关于如何解决这个问题,有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-24 03:15:15

UIColor(hue: saturation: brightness: alpha)的参数都是CGFloat类型的。您看到的问题是,根据体系结构的不同,CGFloat被别名为不同的类型。对于32位ARM (iPhone 4S和5),它在内部是一个Float,但对于arm64,它实际上是一个Double。如果您只使用CGFloat而不是Float来进行类型转换,那么它将运行得很好:

代码语言:javascript
复制
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);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24377699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档