Если вы используете Xcode 9, вы не можете использовать .random(in:)
, который был представлен в Xcode 10. Вместо этого используйте 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)