Динамический UIBezierPath

Я хотел бы сделать динамический UIBezierPath, кажется, меняется как следующее видео

Пример динамического BezierPath

сначала я пытаюсь создать массив точек и рисовать линии между ними, затем меняю точку, массив меняю путь, но это не дает мне идеальный вид

for (int i=0; i<frame.size.width; i++)
        {
            [_screenPoints addObject:[NSValue valueWithCGPoint:CGPointMake(i, height)]];

        }

Кто-нибудь может дать мне идею, как сделать что-то подобное?

1 ответ

Решение

Вы можете делать то, что вы описываете, используя CAShapeLayer и CGPath. Затем вы создаете CABasicAnimation, которая анимирует изменение вашего CGPath.

(CGPath - это базовый объект Foundation, который лежит в основе UIBezierPaths. Вы можете получить CGPath из UIBezierPath, если вы не привыкли работать с объектами CGPath.)

Хитрость для анимации изменений пути заключается в том, что путь должен сохранять одинаковое количество и тип контрольных точек до и после анимации. Таким образом, в видео, которое вы опубликовали, вы разбили свой путь на фиксированное количество отрезков (скажем, 5 отрезков). Когда прямая линия, она все равно будет соединенным набором из 5 отрезков, которые образуют прямую линию. Затем, чтобы оживить его до другой формы, вы просто переместите контрольные точки на пути.

Другие вопросы по тегам