我设法沿着UIBezierPath为CALayer制作动画.
我想要完成的是仅为路径的一定百分比设置动画,例如,仅为路径的25%,并且该层保持在该位置(25%).
这样做的方法是什么?这是我的代码,它总是为完整路径设置动画.
let aPath = UIBizierPath(CGPath: somePath) let anim = CAKeyframeAnimation(keyPath: "position") anim.path = aPath.CGPath anim.rotationMode = kCAAnimationRotateAuto anim.repeatCount = 1 anim.fillMode = kCAFillModeForwards anim.removedOnCompletion = false anim.duration = 3.0 anim.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaSEOut) ticker.addAnimation(anim,forKey: "animate_ticker")
解决方法
简单改变一个属性:
anim.repeatCount = 0.25
这是一个 excellent article on animation timing,你可以学习如何对你的动画进行更细粒度的控制.
附加:
1.为了实现你想要的,最接近的方法是拥有25%的子路径,这里有一些helper method.
2.如果您能忍受速度差异,请使用上述方法,并在动画结束时设置回位置:
ticker.position = ticker.presentationLayer().position