Еще лучше попробуйте следующее:
-(void) nextAnimation
{
CGPoint point = [[self.animatePoints objectAtIndex:0] CGPointValue];
[self.animatePoints removeObjectAtIndex:0];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationRepeatCount:100];
dotMotion.center = point;
[UIView commitAnimations];
}
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
{
if ([self.animatePoints count] > 0) {
[self nextAnimation];
}
}
-(void)animateDot {
self.animatePoints = [NSMutableArray array];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
for(int i = 1; i < doodlePoints->size(); i++){
[self.animatePoints addObject:[NSValue valueWithCGPoint:(*doodlePoints)[i]]];
}
[self nextAnimation];
}
Это грубый пример загрузки отдельных точек в свойстве NSMutableArray, которое постепенно обрабатывается и очищается при завершении каждой анимации.Вы также можете легко использовать свойство внутреннего индекса для массива doodlePoints, но я сделал это так, если вам когда-нибудь понадобится передать другой набор точек.В моем примере мы установили делегат анимации и селектор обратного вызова, чтобы нам можно было рассказать о завершении каждой анимации.Затем мы планируем анимацию на следующую точку и удаляем ее из массива.