如何使用CAAnimate为UIBezierPath设置动画,以相同的速度绘制线段?

时间:2019-05-27 15:30:04

标签: ios swift uibezierpath caanimation apple-pencil

我想重画一条用Apple Pencil绘制的线。即使这些点的长度不同,如何设置从路径上的一个点到下一个点的动画速度也一样?这是为了保留自然的书写流程,而不是像机器人绘制的那样。

所以可以说一行看起来像这样:

o ---- o--o -------- o

其中“ o”是点,“-”是它们之间的线。其绘制方式与此UIBezierPath相同:

o ---------------- o

我希望前一条路径花的时间恰好是后者要绘制的时间的四倍,并且每个路段应该花相同的时间。由于Apple Pencil通过输入点进行跟踪,因此可以保持重绘时的初始速度。

我尝试了普通的CABasicAnimation,并且轻松地进行了操作。但这并不能保持人类手写的自然和个人动感。

let layer = CAShapeLayer()
layer.path = myPath

let animation = CABasicAnimation(keyPath: "strokeEnd")
animation.fromValue = 0.0
animation.toValue = 1.0
animation.duration = 2

layer.add(animation, forKey: "drawLineAnimation")

期望将每个片段的动画时间设置为相同的方法,但UIBezierPath会忽略片段中的点数,并在线使用长度作为计时。

0 个答案:

没有答案