【Swift3】2つのUIView.animateを交互に動かす

  • 1
    Like
  • 0
    Comment

アニメーションで心拍を表現したい!

ハートを心拍のようにドキドキ、ドゥンドゥンと動かしたい。
ライブラリで何とかなりそうな気はしたけど、デフォルトで入っているアニメーションでどうにかなった。

やりたかったこと

UIImageViewを
0.5秒かけて小さく
→2.0秒かけて大きく
 するのをループする。

capture.gif

二つのアニメーションに分けないとだめなのでoptions: .repeatが使えなかった。

完成したやつ

AnimationController.swift
let image = UIImage(named: "image.png")
override func viewDidAppear(_ animated: Bool) {
    animate2()
}

func animate1() {
    UIView.animate(withDuration: 2.0, animations: {
        self.image.transform = CGAffineTransform(scaleX: 1.5, y: 1.5
    }) { _ in
        self.animate2()
    }
}

func animate2() {
    UIView.animate(withDuration: 0.5, animations: {
        self.image.transform = CGAffineTransform(scaleX: 1.0 / 1.5, y: 1.0 / 1.5)
    }) { _ in
        self.animate1()
    }
}

completionにお互いのアニメーションを指定してゴリゴリっと。
.repeatを使わなくても何とかできました。