首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >animationDidStop方法的多个CAAnimations?

animationDidStop方法的多个CAAnimations?
EN

Stack Overflow用户
提问于 2011-10-13 10:18:03
回答 2查看 7.5K关注 0票数 20

我知道您必须使用此方法来获取动画完成时的委托方法:

代码语言:javascript
复制
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag {

问题是,我如何区分像2或更多这样的多个CAAnimations?

我用谷歌搜索了一下,但我没有找到任何有用的东西。

请与我分享你是如何做到这一点的!

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-13 16:45:12

您可以像这样设置CAAnimation实例的键/值对象:

代码语言:javascript
复制
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;

检查委托方法中调用的是哪一个:

代码语言:javascript
复制
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
    if([[anim valueForKey:@"id"] isEqual:@"animation1"]) {
        NSLog(@"animation1");
    }
    if([[anim valueForKey:@"id"] isEqual:@"animation2"]) {
        NSLog(@"animation2");
    }
}
票数 50
EN

Stack Overflow用户

发布于 2016-06-01 20:47:15

CAAnimation对象应该时不时地被重用,这就是为什么我不喜欢给它一个特定的键(因为它不是唯一的)。它的独特之处在于它与CALayer和addAnimation:forKey:的关联。出于这个原因,我在animationDidStop中使用了以下代码

代码语言:javascript
复制
if animation == layer.animationForKey(AnimationKeys.scaleUp) {
   // scaleUp animation has completed
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7748722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档