ryonamasteの日記

主に自身が学んだIT関連の技術情報をまとめています。

Swiftで画像を点滅させる方法

自作アプリの開発をしていた際に、画像を点滅させたかったのでやってみました。
最初はOptionsにrepeatを指定していたのですが、消えたあといきなりalpha=1.0に戻ってしまうので、以下のコードで実装しました。

class ViewController: UIViewController {
    @IBOutlet weak var imageView: UIImageView!

    private var _stopAnimation = false
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // アニメーションの開始
        self.startAnimation()
    }
    
    private func startAnimation() {
        if _stopAnimation {
            return
        }
        
        // 2秒かけて透明にし、完了したら2秒かけて元に戻す。
        UIView.animate(withDuration: 2.0,
                       delay: 0.0,
                       animations: { _ in
                        self.imageView.alpha = 0.0
            }, completion: { _ in UIView.animate(withDuration: 2.0,
                                                 delay: 0.0,
                                                 animations: { _ in
                                                    self.imageView.alpha = 1.0
                }, completion: { _ in self.startAnimation() })})
    }
    

    @IBAction func pushStopButton(_ sender: AnyObject) {
        // ボタンが押されたらアニメーションを停止する。
        _stopAnimation = true
    }
}

アニメーションを停止させたいのですが、うまいこと止まらなかったので、stopボタンが押されたら停止用の変数をtrueにしています。
何かいい方法はないものでしょうか・・・