Swift background de animation de color de bucle

Quiero que el color de background de mi aplicación iOS cambie entre cuatro colors por una cantidad de segundos

Esto es lo que tengo hasta ahora (hace exactamente lo que quiero cuando especifiqué solo 2 colors)

También necesito que la animation se ejecute en un bucle infinitamente.

ViewController.swift

UIView.animateWithDuration(X.0, animations: { // Color 1 self.view.backgroundColor = UIColor(rgba) // Color 2 self.view.backgroundColor = UIColor(rgba) // Color 3 self.view.backgroundColor = UIColor(rgba) // Color 4 self.view.backgroundColor = UIColor(rgba) }) 

Probar esto:

 UIView.animateWithDuration(1.0, animations: { () -> Void in self.view.backgroundColor = UIColor.blackColor() }) { (Bool) -> Void in UIView.animateWithDuration(1.0, animations: { () -> Void in self.view.backgroundColor = UIColor.greenColor() }, completion: { (Bool) -> Void in UIView.animateWithDuration(1.0, animations: { () -> Void in self.view.backgroundColor = UIColor.grayColor() }, completion: { (Bool) -> Void in UIView.animateWithDuration(1.0, animations: { () -> Void in self.view.backgroundColor = UIColor.networkingColor() }, completion:nil) }) }) } 

En caso de que desee una animation repetitiva continua, pruebe esto:

 UIView.animateWithDuration(2, delay: 0.0, options:[UIViewAnimationOptions.Repeat, UIViewAnimationOptions.Autoreverse], animations: { self.view.backgroundColor = UIColor.blackColor() self.view.backgroundColor = UIColor.greenColor() self.view.backgroundColor = UIColor.grayColor() self.view.backgroundColor = UIColor.networkingColor() }, completion: nil) 

A continuación, el código ayuda a mantener habilitada la interacción del usuario con la vista animada. Una generación de colors aleatorios (use en caso de que sea necesario).

 UIView.animateWithDuration(7, delay: 1, options: [UIViewAnimationOptions.AllowUserInteraction, UIViewAnimationOptions.Repeat, UIViewAnimationOptions.Autoreverse], animations: { self.yourView.backgroundColor = self.randomColor() self.yourView.backgroundColor = self.randomColor() }, completion:nil ) func randomColor() -> UIColor { let randomRed:CGFloat = CGFloat(drand48()) let randomGreen:CGFloat = CGFloat(drand48()) let randomBlue:CGFloat = CGFloat(drand48()) return UIColor(networking: randomRed, green: randomGreen, blue: randomBlue, alpha: 1.0) } 

Tienes que usar NSTimer :

 let timer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: "update", userInfo: nil, repeats: true) func update() { let nextCollor = getNextColor() UIView.animateWithDuration(X.0, animations: { self.view.backgroundColor = nextCollor }) } func getNextColor() -> UIColor { let currentColor = self.view.backgroundColor if currentColor == smaple1 { return UIColor.networkingColor() } else if currentColor == smaple2 { return UIColor.grayColor() } else { return UIColor.whiteColor() } } 

NSTimer.scheduledTimerWithTimeInterval ejecuta su código cada 5 segundos

PD: no olvides invalidar el timer cuando hayas terminado con él. Simplemente llame a timer.invalidate() para ello. De lo contrario, te estrello.