类型“ Double”没有成员“ random”

时间:2019-03-30 15:00:50

标签: ios swift random double

我对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”

1 个答案:

答案 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