Cómo hacer un color de fondo aleatorio con Swift

¿Cómo puedo hacer una función aleatoria de color de fondo usando Swift?

import UIKit import AVFoundation class ViewController: UIViewController { var numberScreen = arc4random_uniform(20) var backgroundColor = arc4random() @IBOutlet weak var perfbadLabel: UILabel! @IBOutlet weak var randomNumber: UILabel! @IBOutlet weak var countLabel: UILabel! @IBOutlet weak var levelLabel: UILabel! var timer = NSTimer() var flashTimer = NSTimer() var count = 40 var labelcount = 1 var velocity = 0.25 //Color Background func colorBackground() { self.view.backgroundColor = UIColor.yellowColor() } 

Necesitarás una función para generar CGFloat aleatorio en el rango de 0 a 1:

 extension CGFloat { static func random() -> CGFloat { return CGFloat(arc4random()) / CGFloat(UInt32.max) } } 

Luego puede usar esto para crear un color aleatorio:

 extension UIColor { static func random() -> UIColor { return UIColor(red: .random(), green: .random(), blue: .random(), alpha: 1.0) } } 

Si quería un alfa aleatorio, simplemente cree otro número aleatorio para eso también.

Ahora puede asignar el color de fondo de su vista de la siguiente manera:

 self.view.backgroundColor = .random() 

Haga una función para generar color aleatorio:

 func getRandomColor() -> UIColor { //Generate between 0 to 1 let red:CGFloat = CGFloat(drand48()) let green:CGFloat = CGFloat(drand48()) let blue:CGFloat = CGFloat(drand48()) return UIColor(red:red, green: green, blue: blue, alpha: 1.0) } 

Ahora puede llamar a esta función siempre que necesite un color aleatorio.

 self.view.backgroundColor = getRandomColor() 

Para Swift 4.2

 extension UIColor { static var random: UIColor { return UIColor(red: .random(in: 0...1), green: .random(in: 0...1), blue: .random(in: 0...1), alpha: 1.0) } } 

Para Swift 3 y superior:

 extension CGFloat { static var random: CGFloat { return CGFloat(arc4random()) / CGFloat(UInt32.max) } } extension UIColor { static var random: UIColor { return UIColor(red: .random, green: .random, blue: .random, alpha: 1.0) } } 

Uso:

 let myColor: UIColor = .random 

Con Swift 4.2 , puede simplificar esto usando las nuevas funciones aleatorias que se han agregado:

 extension UIColor { static func random () -> UIColor { return UIColor( red: CGFloat.random(in: 0...1), green: CGFloat.random(in: 0...1), blue: CGFloat.random(in: 0...1), alpha: 1.0) } } 

Hay más detalles aquí .

 func anotherGetRandomColor()->UIColor{ let newRed = arc4random_uniform(255)/255 let newGreen = arc4random_uniform(255)/255 let newBlue = arc4random_uniform(255)/255 return UIColor(red: CGFloat(newRed), green: CGFloat(newGreen), blue: CGFloat(newBlue), alpha: 1.0) } 

Swift 4.2 🔸

Estoy agregando esta respuesta porque usa un enfoque diferente, y debido a que muchas de las respuestas anteriores requieren azúcar sintáctico adicional, que IMO no debería preferirse. Vainilla rápida FTW

 class UIColorParser{ /** * Returns random color * EXMPLE: self.backgroundColor = UIColorParser.random */ static var random:UIColor { let r:CGFloat = CGFloat(arc4random() % 255) / 255.0 let g:CGFloat = CGFloat(arc4random() % 255) / 255.0 let b:CGFloat = CGFloat(arc4random() % 255) / 255.0 let uiColor:UIColor = UIColor.init(red: r, green: g, blue: b, alpha: 1) return uiColor } }