blog

プログラミングとひとりごと。

Swift4でアニメーションを動かして止めたり。

Swift4でアニメーション。

イメージビューを回転させて、止めるボタンを押した時の位置で止める。

 

blue-bear.jp

let layer:CALayer = image.layer
let animation:CABasicAnimation = CABasicAnimation(keyPath: "transform.rotation")
animation.toValue = M_PI / 2.0
animation.duration = 0.5 // 0.5秒で90度回転
animation.repeatCount = MAXFLOAT; // 無限に繰り返す
animation.cumulative = true; // 効果を累積

 

ここを参考にしてちょっと変更したものが下記

 

    @IBOutlet weak var imageView: UIImageView!

    

    // まわすボタンの処理

    @IBAction func rotateButton(_ sender: Any) {

       

        let animation:CABasicAnimation = CABasicAnimation(keyPath: "transform.rotation")

        animation.toValue = .pi / 2.0

        animation.duration = 2           // 指定した秒で90度回転

        animation.repeatCount = MAXFLOAT;   // 無限に繰り返す

        animation.isCumulative = true;         // 効果を累積

        imageView.layer.add(animation, forKey: "ImageViewRotation")

    }

 

前作った時と動きがちょっと違う。。。

前の方がギクシャク動いて、今回作ったのだとスムーズに動く。

 

で、動かしたはいいけど、止めるのはどうすれば? 

 と検索して探す。

 

teratail.com

回答から

let pausedTime: CFTimeInterval = layer.convertTime(CACurrentMediaTime(), fromLayer: nil)

layer.speed = 0.0

layer.timeOffset = pausedTime

ここを参考にして

ちょっと変えたものが下記

    // とめるボタンの処理

    @IBAction func stopButton(_ sender: Any) {

        let pausedTime: CFTimeInterval = imageView.layer.convertTime(CACurrentMediaTime(), from: nil)

        imageView.layer.speed = 0.0

        imageView.layer.timeOffset = pausedTime

 

    }

 

 一時停止、なのかな、、、

私の意図としては「とめるボタンを押した時の状態で止めたい」

のでこれでいい、、、(ことにする)