Как я могу анимировать UIBezierPath с CAAnimate, чтобы рисовать отрезки с одинаковой скоростью?
Я хочу перерисовать линию, нарисованную Apple Pencil. Как можно установить одинаковую скорость анимации от одной точки на пути к следующей, даже если эти точки разнесены на разные длины? Это сделано для того, чтобы сохранить естественный поток письма, а не сделать его, как нарисованный роботом.
Допустим, строка выглядит так:
о ---- о - о -------- о
где "о" - это точки, а "-" - это линия между. Он рисуется так же, как этот UIBezierPath:
о ---------------- О
Я хочу, чтобы первый путь занимал ровно в четыре раза больше времени, чем второй, и каждый сегмент должен занимать одно и то же время. Так как 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 игнорирует количество точек в сегменте, а в режиме онлайн использует длину для синхронизации.