我知道你必须使用这个方法来获取动画结束时的委托方法:
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag {
问题是,我如何区分多个CAAnimations,如2个或更多?
我用谷歌搜索了这个,但我没有找到任何有用的东西。
请与我分享您是如何完成此任务的!
谢谢!
答案 0 :(得分:50)
您可以为此设置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");
}
}
答案 1 :(得分:1)
CAAnimation
对象应该不时重复使用,这就是为什么我不想给它一个特定的密钥(因为它不是唯一的)。使其与众不同的是与addAnimation:forKey:
的CALayer的关联。出于这个原因,我在animationDidStop
中使用了以下代码:
if animation == layer.animationForKey(AnimationKeys.scaleUp) {
// scaleUp animation has completed
}