2015-12-20 13 views
10

ランダムな色でUIViewの背景をアニメーション化したいと思います。アニメーションUIViewの背景色のスウィフト

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

} 

しかし、それはちょうど開始時にランダムな色を生成し、私のアニメーションで、この単一色を使用します。 は、ここで私がこれまで行ってきたものです。色をアニメーション化する方法を見つけたいので、UIVIewの背景はランダムな虹のように見えます。

答えて

20

アニメーションを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

ええ、ありがとうございます!私が望むのと全く同じように動作します。 –