У меня есть две анимации в пользовательском UIView, anim1 и anim2. Anim1 устанавливает свой делегат self, и в моем классе есть метод animationDidStop, который вызывает Anim2. Если я хочу, чтобы после завершения Anim2 произошло что-то еще, как мне это сделать? Могу ли я указать метод делегата с другим именем?
UPDATE
Я объявляю две анимации как iVars:
CABasicAnimation *topFlip;
CABasicAnimation *bottomFlip;
Я создаю каждую анимацию и устанавливаю для себя значение delgate, например
- (CABasicAnimation *)bottomCharFlap: (CALayer *)charLayer
{
bottomFlip = [CABasicAnimation animationWithKeyPath:@"transform"];
charLayer.transform = CATransform3DMakeRotation(DegreesToRadians(0), 1, 0, 0); //set to end pos before animation
bottomFlip.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(DegreesToRadians(-360), 1, 0, 0)];
bottomFlip.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(DegreesToRadians(-270), 1, 0, 0)];
bottomFlip.autoreverses = NO;
bottomFlip.duration = 0.5f;
bottomFlip.repeatCount = 1;
bottomFlip.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseOut];
bottomFlip.delegate = self;
bottomFlip.removedOnCompletion = FALSE;
return bottomFlip;
}
Затем я пытаюсь найти bottomFlip в animationdidStop:
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag {
if (theAnimation == bottomFlip) {
NSLog(@"Bottom Animation is: %@", bottomFlip);
}
NSLog(@"Animation %@ stopped",theAnimation);
[bottomHalfCharLayerFront addAnimation:[self bottomCharFlap:bottomHalfCharLayerFront] forKey:@"bottomCharAnim"];
bottomHalfCharLayerFront.hidden = NO;
topHalfCharLayerFront.hidden = YES;
//insert the next one???
}
«Анимация остановлена» регистрируется, но больше ничего, т. Е. Она не распознает bottomFlip iVar