animationDidStop方法的多个CAAnimations?
我知道你必须使用这个方法来获取animation完成时的委托方法:
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag {
问题是,我将如何区分多个CAAnimations像2或更多?
我GOOGLE了这一点,我没有发现任何有用的东西。
请与我分享你是如何做到的!
谢谢!
您可以为CAAnimation实例设置键/值对象,如下所示:
CABasicAnimation *theAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"]; [theAnimation setValue:@"animation1" forKey:@"id"]; theAnimation.delegate = self; CABasicAnimation *theAnimation2 = [CABasicAnimation animationWithKeyPath:@"opacity"]; [theAnimation2 setValue:@"animation2" forKey:@"id"]; theAnimation2.delegate = self;
检查在委托方法中调用哪一个:
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{ if([[anim valueForKey:@"id"] isEqual:@"animation1"]) { NSLog(@"animation1"); } if([[anim valueForKey:@"id"] isEqual:@"animation2"]) { NSLog(@"animation2"); } }
CAAnimation
对象应该不时重用,这就是为什么我不喜欢给它一个特定的关键(因为它不是唯一的)。 是什么让它独特的是与addAnimation:forKey:
的关联与addAnimation:forKey:
为此,我在animationDidStop
使用下面的代码:
if animation == layer.animationForKey(AnimationKeys.scaleUp) { // scaleUp animation has completed }