У вас есть анимация ключевого кадра, которая является хорошим началом.Но вы забыли добавить некоторые фактические кадры!Для этого поставьте немного keyTimes
.(И удалите kCAAnimationPaced
; это означает, что вся анимация имеет одну скорость, что противоположно тому, что вы сказали, что вы хотели.)
Обратите внимание, что с анимацией пути этого вида, разделение кадровточки - это точки Безье, используемые для определения пути, поэтому все будет зависеть от того, как путь был построен в первую очередь.
Вот фактический пример:
![enter image description here](https://i.stack.imgur.com/JDCJ4.gif)
Наблюдайте, как мы ускоряемся на каждом углу, когда мы продвигаемся вокруг квадрата.Углы находятся там, где находятся контрольные точки.Вот код, который я использовал:
let path = CGPath(rect: CGRect(x: 120, y: 120, width: 100, height: 100),
transform: nil)
let anim = CAKeyframeAnimation(keyPath: #keyPath(CALayer.position))
anim.duration = 10
anim.path = path
anim.calculationMode = .linear
anim.keyTimes = [0.0, 0.7, 0.9, 0.98, 1.0]
self.v.layer.add(anim, forKey: nil)