import UIKit class ViewController: UIViewController { @IBOutlet weak var light1: UIImageView! @IBOutlet weak var light2: UIImageView! @IBOutlet weak var light3: UIImageView! enum BlinkingStatus { case Blinking, Off } var blinkingStatus: BlinkingStatus = .Blinking override func viewDidLoad() { super.viewDidLoad() self.startBlinking() } func startBlinking() { self.blinkingStatus = .Blinking self.lightLight(1) } func stopBlinking() { self.blinkingStatus = .Off } func getLight(number: Int) -> UIImageView { switch number { case 1: return self.light1 case 2: return self.light2 case 3: return self.light3 default: return self.light1 } } func lightLight(number: Int) { var light = self.getLight(number) UIView.animateWithDuration(1.0, delay: 0.0, options: nil, animations: { light.alpha = 1 }, completion: { finished in self.douseLight(number) } ) } func douseLight(number: Int) { var light = self.getLight(number) UIView.animateWithDuration(0.5, delay: 0.0, options: nil, animations: { light.alpha = 0 }, completion: { finished in if self.blinkingStatus == .Blinking { self.lightLight((number % 3) + 1) } } ) } }