CABasicAnimation不会顺利结束

时间:2017-02-21 13:38:23

标签: ios swift uiview core-animation

我为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")
    }
}

Animation Preview

1 个答案:

答案 0 :(得分:0)

在进行动画制作之前,您需要将图层的位置设置为动画完成后的位置。这是因为动画在不同的图层上单独运行,一旦完成就会消失。