Вы можете создать CAShapeLayer с вашим CGPath (может быть создан, например, из UIBezierPath).
Тогда свойство пути CAShapeLayer само анимируется, и вы также можете создавать более сложные анимации, используя анимируемые свойства strokeStart и strokeEnd (доступно начиная с iOS 4.2)
Простой пример того, как добавить слой со случайной линией, которая появляется с анимацией:
CAShapeLayer *l = [CAShapeLayer layer];
l.frame = self.view.bounds;
l.strokeColor = [UIColor redColor].CGColor;
CGPoint start = CGPointMake(arc4random()%300+10, arc4random()%400+40);
CGPoint end = CGPointMake(arc4random()%300+10, arc4random()%400+40);
UIBezierPath *path = [[UIBezierPath alloc] init];
[path moveToPoint:start];
[path addLineToPoint:end];
l.path = path.CGPath;
[path release];
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
animation.fromValue = [NSNumber numberWithFloat:0.0f];
animation.toValue = [NSNumber numberWithFloat:1.0f];
animation.duration = 3.0f;
[l addAnimation:animation forKey:@"myStroke"];
[self.view.layer addSublayer:l];