Gabe12
Gabe12

Reputation: 627

Randomize color in XCode

I'm trying to randomize the text color of a label in XCode with some colors I already created, I've tried different ways and this is the closest I got.

    override func viewDidLoad() {
    super.viewDidLoad()

    let color1 = UIColor(red: 1, green: 165/255, blue: 0, alpha: 1)
    let color2 = UIColor(red: 80/255, green: 1, blue: 200/255, alpha: 1)
    let color3 = UIColor(red: 150/255, green: 80/255, blue: 1, alpha: 1)
    let color4 = UIColor(red: 1, green: 80/255, blue: 80/255, alpha: 1)
    let color5 = UIColor(red: 80/255, green: 1, blue: 80/255, alpha: 1)

    var randomEight = arc4random_uniform(5)+1
    var randomColor:String = String(format:"color%i", randomEight)

    randomLabel.textColor = randomColor
}

However, the randomColor variable is a String and I can't transform it to a UIColor.

Upvotes: 1

Views: 138

Answers (4)

Adam Evans
Adam Evans

Reputation: 2082

Put all of the colors in an array, then use randomEight as the index in the array to get the right color. Also, you may want to check the integer division to make sure you get the right colors.

let color1 = UIColor(red: 1, green: 165/255, blue: 0, alpha: 1)
let color2 = UIColor(red: 80/255, green: 1, blue: 200/255, alpha: 1)
let color3 = UIColor(red: 150/255, green: 80/255, blue: 1, alpha: 1)
let color4 = UIColor(red: 1, green: 80/255, blue: 80/255, alpha: 1)
let color5 = UIColor(red: 80/255, green: 1, blue: 80/255, alpha: 1)

let colors = [color1, color2, color3, color4, color5]
let randomEight = Int(arc4random_uniform(UInt32(colors.count)))

randomLabel.textColor = colors[randomEight]

Upvotes: 2

sriram hegde
sriram hegde

Reputation: 2471

Try this oneliner ;)

 randomLabel.textColor = UIColor(red : CGFloat(arc4random_uniform(255)) , green : CGFloat(arc4random_uniform(255)), blue : CGFloat(arc4random_uniform(255)) , alpha : 1)

Upvotes: 0

Arkku
Arkku

Reputation: 42119

Put the colours in an array, then select a random index, e.g.:

let colors: [UIColor] = [ UIColor.redColor(),
                          UIColor.blueColor(),
                          UIColor.greenColor()
                        ] // ^- replace with your own colors

let randomColor = colors[Int(arc4random_uniform(UInt32(colors.count)))]

Note the necessary casts to work with arc4random_uniform. Also note that the indices start at 0, so do not add 1 to the random number.

There is no need for the randomEight (why is it “eight” anyhow?), and if the single text colour is the only place you use the colour, you can even leave out the randomColor and assign directly to randomLabel.textColor.

Upvotes: 1

yzet00
yzet00

Reputation: 511

let randomEight = arc4random_uniform(5)+1

override func viewDidLoad() {
    super.viewDidLoad()

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


 if randomEight == 1 {
    randomLabel.textColor = UIColor.cyanColor()
    }
    else if randomEight == 2 {

        randomLabel.textColor = UIColor.purpleColor()
    }

    else if randomEight == 3{
        randomLabel.textColor = UIColor.orangeColor()

    } else if randomEight == 4 {

        randomLabel.textColor = UIColor.blueColor()
    }
    else {

        randomLabel.textColor = UIColor.greenColor()
    }
    return randomLabel

}

Upvotes: 0

Related Questions