У меня есть следующее расширение для UIView для выполнения анимации гудения.CABasicAnimation не заканчивается Smoothly
Анимация работает нормально, хотя окончание не является гладким. Для окончательного подсчета анимации UIView отправляется center.x - 40
и резко возвращается к center.x
.
Я не мог заставить его сделать окончание плавным образом. Как я могу это достичь?
extension UIView {
func buzz() {
let animation = CABasicAnimation(keyPath: "position")
animation.duration = 0.4
animation.repeatCount = 2
animation.autoreverses = true
animation.fromValue = NSValue(cgPoint: CGPoint(x: self.center.x - 40.0, y: self.center.y))
animation.toValue = NSValue(cgPoint: CGPoint(x: self.center.x + 40.0, y: self.center.y))
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
layer.add(animation, forKey: "position")
}
}
Получил идею, но не мог бы вы потратить на это, предоставив образец кода. –
добавьте эту строку после открытия скобки или в пустую строку после анимации ...: layer.position = CGPoint (x: self.center.x + 40.0, y: self.center.y) – Mozahler
Эта строка кода делает он перемещается только в одном направлении (эффект гудения исчезает), и как только он заканчивается, представление выходит за пределы на 40. –