2013-09-13 5 views
5

Можно ли охарактеризовать точку кривой Безье? Я пытаюсь сделать плавный переход от линии к стрелке.Анимация точки кривой Безье

Animate Bezier Point

Вот что линия выглядит в коде

//// Color Declarations 
UIColor* white = [UIColor colorWithRed: 1 green: 1 blue: 1 alpha: 0.374]; 

//// Group 
{ 
    //// Bezier Drawing 
    UIBezierPath* bezierPath = [UIBezierPath bezierPath]; 
    [bezierPath moveToPoint: CGPointMake(30.5, 43.5)]; 
    [bezierPath addLineToPoint: CGPointMake(30.5, 29.59)]; 
    [bezierPath addLineToPoint: CGPointMake(30.5, 15.5)]; 
    bezierPath.lineCapStyle = kCGLineCapRound; 

    bezierPath.lineJoinStyle = kCGLineJoinBevel; 

    [white setStroke]; 
    bezierPath.lineWidth = 5.5; 
    [bezierPath stroke]; 
} 

... Но я не знаю, как выбрать точку и анимировать только что. Возможно ли это?

ответ

14

Явная CGPath анимация с использованием CAShapeLayer:

// Create the starting path. Your curved line. 
UIBezierPath * startPath; 
// Create the end path. Your straight line. 
UIBezierPath * endPath; 

// Create the shape layer to display and animate the line. 
CAShapeLayer * myLineShapeLayer = [[CAShapeLayer alloc] init]; 

CABasicAnimation * pathAnimation = [CABasicAnimation animationWithKeyPath:@"path"]; 
pathAnimation.fromValue = (__bridge id)[startPath CGPath]; 
pathAnimation.toValue = (__bridge id)[endPath CGPath]; 
pathAnimation.duration = 5.0f; 
[myLineShapeLayer addAnimation:pathAnimation forKey:@"animationKey"]; 
0

Непонятно, что вы просите. Вы пытаетесь анимировать изменение формы вашей линии, перемещая одну из контрольных точек?

Способ анимации изменений в пути - создать CAShapeLayer и установить его как подуровень слоя вашего представления. Затем, если вы измените путь, связанный с слоем формы, система будет использовать неявную анимацию для внесения изменения.

Обратите внимание, что путь в слое формы должен иметь одинаковое число/тип контрольных точек или результаты анимации «неопределены».

Смежные вопросы