title: Move to few point with CAKeyframeAnimation
body: <p>I have code :</p>
  
  <pre><code>NSMutableArray * pathArray = [[NSMutableArray alloc]init];
  CGPoint currentPoint = CGPointMake(xp, yp);
  [pathArray addObject:[NSValue valueWithCGPoint: currentPoint]];
  
  NSMutableArray * pathArray = [algorithm CreatePath];
  CGMutablePathRef path = CGPathCreateMutable();
  
  CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
  pathAnimation.values = pathArray;
  pathAnimation.path = path;
  pathAnimation.duration = 1.0;
  [self.firstBall.ballLayer addAnimation:pathAnimation forKey:@"position"];
  </code></pre>
  
  <p>And in path array I have few CGPoints wrapped in NSValue. But when animation go its only move from first to last coordinate? Why it not use other points?</p>
  
  <p>New code: </p>
  
  <pre><code>-(void)MoveBallWithAlgorithm:(CGPoint)start end:(CGPoint)end;
  {
      FindWayAlgorithm *algorithm = [[FindWayAlgorithm alloc]init];
      algorithm.LX = algorithm.LY = self.columns;
  
      [algorithm CreateBoard:self.fieldsArray];
      [algorithm FindWay:start end:end];
      CGMutablePathRef path = CGPathCreateMutable();
      NSMutableArray * pathArray = [algorithm CreatePath];
  
         @try
      {
          CGPathMoveToPoint(path, NULL, self.firstBall.ballCoordinates.x, self.firstBall.ballCoordinates.y);
          for (NSValue * pointValue in pathArray) {
              CGPoint point = [pointValue CGPointValue];
              Field* field = [self FindFieldWithPoint:point];
              CGPathAddLineToPoint(path, NULL, field.ballCoordinates.x, field.ballCoordinates.y);
          }
      }
      @catch(NSException* ex)
      {
          NSLog(@"Bug captured when move ball with algorithm: %@ %@",ex, [NSThread callStackSymbols]);
      }
      CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
      pathAnimation.duration = 2.0;
      pathAnimation.path = path;
      [pathAnimation setDelegate:self];
      [self.firstBall.ballLayer addAnimation:pathAnimation forKey:@"position"];
  }
  
  - (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag{
  
      NSInteger firstBallIndex = [self.fieldsArray indexOfObject:self.firstBall];
      NSInteger secondBallIndex = [self.fieldsArray indexOfObject:self.secondBall];
      self.ballFrom = [self.fieldsArray objectAtIndex:firstBallIndex];
      self.ballTo = [self.fieldsArray objectAtIndex:secondBallIndex];
      self.ballTo.ballLayer = self.ballFrom.ballLayer;
      CGPoint endPt = CGPointMake(self.secondBall.ballCoordinates.x,self.secondBall.ballCoordinates.y);
  
      self.ballTo.ballLayer.frame = CGRectMake(endPt.x, endPt.y, self.ballSize, self.ballSize);
      self.ballFrom.ballLayer = nil;
      [self.fieldsArray replaceObjectAtIndex:firstBallIndex withObject:self.ballFrom];
      [self.fieldsArray replaceObjectAtIndex:secondBallIndex withObject:self.ballTo];
      self.firstBall = nil;
      self.secondBall = nil;
  }
  </code></pre>