iOS - переход между градиентами? - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь бесконечно вращать цвет фона между двумя разными градиентами, но фактический переход не длится так долго, как ожидалось (он длится меньше секунды и нет задержки между каждым переходом).

var backgroundColours = [CAGradientLayer()]
var backgroundLoop = 0

override func viewDidLoad() {
    super.viewDidLoad()
    backgroundColours = [Colors.init().one, Colors.init().two] // These are two CAGradientLayers but I haven't included their code
    backgroundLoop = 0
    self.animateBackgroundColour()
}

func animateBackgroundColour () {

    backgroundLoop = (backgroundLoop + 1) % (backgroundColours.count)

    UIView.animate(withDuration: 2.0, delay: 2.0, options: .curveLinear, animations: {
        self.view.backgroundColor = UIColor.clear
        let backgroundLayer = self.backgroundColours[self.backgroundLoop]
        backgroundLayer.frame = self.view.frame
        self.view.layer.insertSublayer(backgroundLayer, at: 0)
    }, completion: { (Bool) -> Void in
        self.animateBackgroundColour()
    })

Это все внутри ViewController класса

1 Ответ

0 голосов
/ 24 июня 2019

UIView.animate анимирует только около пяти специализированных view свойств.Вы не анимируете ни одно из этих свойств.Вам нужна анимация layer (например, CABasicAnimation).

...