2

Я пытаюсь оживить нарисованные объекты, например, я нарисовал линию с таким подходом:Как оживить нарисованную линию в Objective C?

UIBezierPath *path = [UIBezierPath bezierPath]; 
    [path moveToPoint:CGPointMake(Center.x, Center.y)]; 
    [path addLineToPoint:CGPointMake(Point.x,Point.y)]; 

    CAShapeLayer *shapeLayer = [CAShapeLayer layer]; 
    shapeLayer.path = [path CGPath]; 
    shapeLayer.strokeColor = [[UIColor whiteColor] CGColor]; 
    shapeLayer.lineWidth = 1.5; 
    shapeLayer.fillColor = [[UIColor clearColor] CGColor]; 

    [self.view.layer addSublayer:shapeLayer]; 

Через некоторое время мне нужно, чтобы оживить линию, чтобы иметь различный Point, но сохраняющий Center как есть, но Я не знаю, как это сделать. Подходит ли мой подход? Есть ли лучший способ сделать это?

+0

возможно дубликат [Как анимировать путь CAShapeLayer и FillColor] (http://stackoverflow.com/questions/15651717/how-to-animate-cashapelayer-path-and- fillcolor) –

+0

Это анимирует рисунок пути, а не оживляет его ПОСЛЕ того, как он уже нарисован (чего я пытаюсь достичь). Спасибо, хотя! : D – Shamy

ответ

2

решаемые его:

CABasicAnimation *morph = [CABasicAnimation animationWithKeyPath:@"path"]; 
    morph.duration = 1.0; 
    UIBezierPath *path5 = [UIBezierPath bezierPath]; 
    [path5 moveToPoint:CGPointMake(P22.x+5, P22.y+5)]; 
    [path5 addLineToPoint:CGPointMake(P21.x,P21.y)]; 
    morph.fromValue = (id) path.CGPath; 
    morph.toValue = (id) path5.CGPath; 

    [shapeLayer addAnimation:morph forKey:nil]; 

    //next line to update the shapeLayer's new path 
    shapeLayer.path = path5.CGPath;