Генератор случайных цветов Swift

Я делаю игру, в которой есть сетка квадратов, а другой - другого цвета (все цвета - бирюзовые оттенки). Я использую функцию для генерации двух разных случайных цветов

func generateColors() -> (main: UIColor, diff: UIColor) {

    let redMain: CGFloat = CGFloat(arc4random(104.0))
    let greenMain: CGFloat = redMain + 105
    let blueMain: CGFloat = redMain + 83

    let redColorMain: CGFloat = redMain / 255.0
    let greenColorMain: CGFloat = greenMain / 255.0
    let blueColorMain: CGFLoat = blueMain / 255.0
    let main = UIColor(red: redColorMain, green: greenColorMain, blue: blueColorMain, alpha: 0.8)

    let redDiff: CGFloat = CGFloat(arc4random(104.0))
    let greenDiff: CGFloat = redDiff + 105
    let blueDiff: CGFloat = redDiff + 83

    let redColorDiff: CGFloat = redDiff / 255.0
    let greenColorDiff: CGFloat = greenDiff / 255.0
    let blueColorDiff: CGFloat = blueDiff / 255
    let diff = UIColor(red: redColorDiff, green: greenColorDiff, blue: blueColorDiff, alpha: 0.8)

    return (main, diff)
}

Тем не менее, я продолжаю получать сообщение об ошибке "Невозможно вызвать arc4random с типом аргумента Double". Почему это говорит, и вы знаете, как решить это? Спасибо!

1 ответ

Решение

Попробуйте вот так:

func generateColors() -> (main: UIColor, diff: UIColor) {

    let redMain: CGFloat = CGFloat(arc4random_uniform(104))
    let greenMain: CGFloat = redMain + 105.0
    let blueMain: CGFloat = redMain + 83.0

    let redColorMain: CGFloat = redMain / 255.0
    let greenColorMain: CGFloat = greenMain / 255.0
    let blueColorMain: CGFloat = blueMain / 255.0
    let main = UIColor(red: redColorMain, green: greenColorMain, blue: blueColorMain, alpha: 0.8)

    let redDiff: CGFloat = CGFloat(arc4random_uniform(104))
    let greenDiff: CGFloat = redDiff + 105.0
    let blueDiff: CGFloat = redDiff + 83.0

    let redColorDiff: CGFloat = redDiff / 255.0
    let greenColorDiff: CGFloat = greenDiff / 255.0
    let blueColorDiff: CGFloat = blueDiff / 255.0
    let diff = UIColor(red: redColorDiff, green: greenColorDiff, blue: blueColorDiff, alpha: 0.8)

    return (main, diff)
}
Другие вопросы по тегам