Динамический 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 отрезков, которые образуют прямую линию. Затем, чтобы оживить его до другой формы, вы просто переместите контрольные точки на пути.