Search code examples
iosswiftloopsanimationcolors

swift background color animation loop


I want the background color of my iOS app to change between four colors over x amount of seconds

This is what I have so far (it does exactly what I want when I specify just 2 colors)

I also need the animation to run in a loop infinitely.

ViewController.swift

    UIView.animateWithDuration(X.0, animations: {
        // Color 1
        self.view.backgroundColor = UIColor(rgba)
        // Color 2
        self.view.backgroundColor = UIColor(rgba)
        // Color 3
        self.view.backgroundColor = UIColor(rgba)
        // Color 4
        self.view.backgroundColor = UIColor(rgba)

    })

Solution

  • Try this out:

    UIView.animateWithDuration(1.0, animations: { () -> Void in
        self.view.backgroundColor = UIColor.blackColor()
        }) { (Bool) -> Void in
            UIView.animateWithDuration(1.0, animations: { () -> Void in
                self.view.backgroundColor = UIColor.greenColor()
                }, completion: { (Bool) -> Void in
                    UIView.animateWithDuration(1.0, animations: { () -> Void in
                        self.view.backgroundColor = UIColor.grayColor()
                        }, completion: { (Bool) -> Void in
                            UIView.animateWithDuration(1.0, animations: { () -> Void in
                                self.view.backgroundColor = UIColor.redColor()
                                }, completion:nil)
                    })
            })
    }
    

    In case you want a continuous repeating animation, try this out:

    UIView.animate(withDuration: 2, delay: 0.0, options:[UIView.AnimationOptions.repeat, UIView.AnimationOptions.autoreverse], animations: {
         self.view.backgroundColor = UIColor.black
         self.view.backgroundColor = UIColor.green
         self.view.backgroundColor = UIColor.darkGray
         self.view.backgroundColor = UIColor.red
    }, completion: nil)