我是IOS开发的新手,我正在尝试使用swift double.random(in:)。
这是文档中的示例:
for _ in 1...3 {
print(Double.random(in: 10.0 ..< 20.0))
}
// Prints "18.1900709259179"
// Prints "14.2286325689993"
// Prints "13.1485686260762"
这是我的代码,我试图生成随机颜色:
UIColor(red: Double.random(in: 1.0 ..< 251.0),
green: Double.random(in: 1.0 ..< 251.0),
blue: Double.random(in: 1.0 ..< 251.0),
aplha: 1);
但我一直得到错误
类型'双'没有会员'随机'
如果使用Xcode 9,则不能使用在Xcode 10中引入的.random(in:)
。而是使用arc4random_uniform
:
let color = UIColor(red: CGFloat(arc4random_uniform(250) + 1) / 255,
green: CGFloat(arc4random_uniform(250) + 1) / 255,
blue: CGFloat(arc4random_uniform(250) + 1) / 255,
alpha: 1)
我不确定你为什么要从1到251(我显然认为你想要除以255,因为8位通道中的值范围是0 ... 255.当使用arc4random_uniform
时,你可以通过提供参数值256:
let color = UIColor(red: CGFloat(arc4random_uniform(256)) / 255,
green: CGFloat(arc4random_uniform(256)) / 255,
blue: CGFloat(arc4random_uniform(256)) / 255,
alpha: 1)
请注意上面使用的CGFloat
。作为一项规则,UIKit使用CGFloat
,而不是Double
。所以,如果你使用Xcode 10,你可以这样做:
let color = UIColor(red: CGFloat.random(in: 0...1),
green: CGFloat.random(in: 0...1),
blue: CGFloat.random(in: 0...1),
alpha: 1)
或者你可以利用Swift知道这些参数类型的事实,并让它推断出CGFloat
:
let color = UIColor(red: .random(in: 0...1),
green: .random(in: 0...1),
blue: .random(in: 0...1),
alpha: 1)