2015-12-20 13 views
10

Chciałbym animować tło UIView z przypadkowymi kolorami. oto co zrobiłem do tej pory:Animacja UIView kolor tła szybko

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) 
    } 

} 

Ale to tylko generuje losowy kolor na początku i używać jednego koloru w mojej animacji. Chciałbym znaleźć sposób na animowanie kolorów, więc tło UIVIew będzie wyglądać jak przypadkowa tęcza.

Odpowiedz

20

Po prostu umieść animację w 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

Tak, dzięki dużo! działa dokładnie tak, jak chciałem. –