Как указать селектор, когда CAKeyframeAnimation закончен?

Я использую CAKeyframeAnimation для анимации представления вдоль CGPath. Когда анимация сделана, я хотел бы смочь назвать некоторый другой метод для выполнения другого действия. Существует ли хороший способ сделать это?

Я посмотрел на использование setAnimationDidStopSelector UIVIEW: однако из документов это похоже, это только применяется при использовании в блоке анимации UIView (beginAnimations и commitAnimations). Я также дал ему попытку на всякий случай, но это, кажется, не работает.

Вот некоторый пример кода (это в пользовательском методе подклассов UIView):

// These have no effect since they're not in a UIView Animation Block
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];    

// Set up path movement
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"path"];
pathAnimation.calculationMode = kCAAnimationPaced;
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = NO;
pathAnimation.duration = 1.0f;

CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, self.center.x, self.center.y);

// add all points to the path
for (NSValue* value in myPoints) {
    CGPoint nextPoint = [value CGPointValue];
    CGPathAddLineToPoint(path, NULL, nextPoint.x, nextPoint.y);
}

pathAnimation.path = path;
CGPathRelease(path);

[self.layer addAnimation:pathAnimation forKey:@"pathAnimation"];

Обходное решение я рассматривал это, должно работать, но не походит на лучший способ, должен использовать performSelector:withObject:afterDelay: NSOBJECT. Пока я установил задержку, равную продолжительности анимации, затем она должна быть прекрасной.

Существует ли лучший путь?Спасибо!

19
задан zskalnik 19 June 2012 в 13:42
поделиться