我对IOS开发还很陌生,我正在尝试使用快捷的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);
但是我不断收到错误消息
类型“ Double”没有成员“ random”
答案 0 :(得分:2)
如果使用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。使用{{1 }},您可以通过提供256的参数值来实现:
arc4random_uniform
请注意上面let color = UIColor(red: CGFloat(arc4random_uniform(256)) / 255,
green: CGFloat(arc4random_uniform(256)) / 255,
blue: CGFloat(arc4random_uniform(256)) / 255,
alpha: 1)
的使用。通常,UIKit使用CGFloat
,而不使用CGFloat
。因此,如果您使用的是Xcode 10,则可以执行以下操作:
Double
或者您可以利用Swift知道这些参数的类型这一事实,并让其推断let color = UIColor(red: CGFloat.random(in: 0...1),
green: CGFloat.random(in: 0...1),
blue: CGFloat.random(in: 0...1),
alpha: 1)
:
CGFloat