как замедлить анимацию при остановке анимации - PullRequest
0 голосов
/ 08 мая 2018

Мой код ниже. Как я могу замедлить скорость, когда анимация остановилась?

extension UIView{
    func rotate() {
        let rotation : CABasicAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
        rotation.fromValue = 0.0
        rotation.toValue = 25
        rotation.duration = 1.5
        rotation.isCumulative = true
        rotation.repeatCount = 1
        self.layer.add(rotation, forKey: "rotationAnimation")
    }
}

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Пожалуйста, найдите следующие детали и добавьте строку ниже в вашем коде,

rotation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)

EaseInOut Кривая замедления облегчает начало анимации медленно, ускоряться до середины его продолжительности, а затем медленно еще раз, прежде чем завершить. Это кривая по умолчанию для большинства анимации.

EaseIn Кривая замедления заставляет анимацию начинаться медленно, а затем ускоряться по мере продвижения.

EaseOut Кривая замедления вызывает быстрое начало анимации, и затем замедлите по мере завершения.

Надеюсь, это поможет вам, и дайте мне знать, если у вас возникнут вопросы.

0 голосов
/ 08 мая 2018

Вы можете использовать self.layer.speed, чтобы плавно уменьшить скорость анимации

Вы можете сделать это так

Примечание: вам нужно внести некоторые изменения, здесь они не тестируются в xcode

  let timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (timer) in
        self.layer.timeOffset = self.layer.convertTime(CACurrentMediaTime(), from: nil)
        if self.layer.speed == 0 { timer.invalidate() }
        self.layer.beginTime = CACurrentMediaTime()
        self.layer.speed -= 0.5

    }
    timer.fire()

Надеюсь, это полезно

...