我想重画一条用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会忽略片段中的点数,并在线使用长度作为计时。