Анимировать цвет фона 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 background будет выглядеть как случайная радуга.
Ответы
Ответ 1
Просто поместите анимацию в 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)
}