我为UIView提供了以下扩展程序以执行动态更新动画。
虽然结尾不顺畅,但动画效果很好。对于最终的动画计数,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")
}
}
答案 0 :(得分:0)
在进行动画制作之前,您需要将图层的位置设置为动画完成后的位置。这是因为动画在不同的图层上单独运行,一旦完成就会消失。