2015-12-20 19 views
10

Mi piacerebbe animare lo sfondo di UIView con colori casuali. ecco quello che ho fatto finora:Animate UIView background color swift

import UIKit 

class ViewController: UIViewController { 

    var timer = NSTimer() 
    var colours = UIColor() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     getRandomColor() 
     timerF() 

     UIView.animateWithDuration(2, delay: 0.0, options:[UIViewAnimationOptions.Repeat, UIViewAnimationOptions.Autoreverse], animations: { 
      self.view.backgroundColor = self.colours 

      }, completion:nil) 
    } 

    func timerF(){ 
     timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("getRandomColor"), userInfo: nil, repeats: true) 
    } 

    func getRandomColor(){ 
     let red = Float((arc4random() % 256))/255.0 
     let green = Float((arc4random() % 256))/255.0 
     let blue = Float((arc4random() % 256))/255.0 
     let alpha = Float(1.0) 
     colours = UIColor(colorLiteralRed: red, green: green, blue: blue, alpha: alpha) 
    } 

} 

Ma solo genera un colore casuale in partenza e utilizzare questo singolo colore nella mia animazione. Mi piacerebbe trovare un modo per animare i colori, quindi lo sfondo di UIVIew sembrerebbe un arcobaleno casuale.

risposta

20

Basta inserire l'animazione in getRandomColor.

func getRandomColor() { 
    let red = Float((arc4random() % 256))/255.0 
    let green = Float((arc4random() % 256))/255.0 
    let blue = Float((arc4random() % 256))/255.0 
    let alpha = Float(1.0) 

    UIView.animate(withDuration: 1.0, delay: 0.0, options:[.repeat, .autoreverse], animations: { 
     self.view.backgroundColor = UIColor(colorLiteralRed: red, green: green, blue: blue, alpha: alpha) 
    }, completion:nil) 
} 
+0

Sì, grazie mille! funziona esattamente come volevo. –