2015-01-02 2 views
1

я хотел бы сделать Dynamic UIBezierPath Кажется, меняется в следующем видеоDynamic UIBezierPath

Example of Dynamic BezierPath

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

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

     } 

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

ответ

2

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

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

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

+0

привет, не могли бы вы привести пример ссылки на то, что вы предложили? –

+0

У меня есть проект под названием [RandomBlobs] (https://github.com/DuncanMC/RandomBlobs) на Github, который анимирует форму, создавая сглаженный многоугольник. Вы можете игнорировать сглаживающую часть и просто посмотреть на код для анимации изменений в пути. Это написано в Objective-C, но оно должно дать вам основную идею. –