animationDidStop用于组动画

Jua*_*uan 4 iphone core-animation uiviewanimation ios

我有一个组动画,但我无法检测何时命中animationDidStop.我的代码示例:

[group setDelegate:self];
[view.layer addAnimation:group forKey:@"groupAnimation"];
Run Code Online (Sandbox Code Playgroud)

你们中的任何人都知道我怎么知道组动画完成的时候?

CSm*_*ith 13

您还需要将animationName属性设置为匹配,并确保正确定义了委托函数:

CAAnimationGroup *group = [CAAnimationGroup animation];
group.duration = 2.0f;
group.delegate = self;
[group setValue:@"groupAnimation" forKey:@"animationName"];
[group setAnimations:[NSArray arrayWithObjects:myAnimation, myOtherAnimation, nil]];
[view.layer addAnimation:group forKey:@"groupAnimation"];
Run Code Online (Sandbox Code Playgroud)

...

- (void)animationDidStop:(CAAnimation *)animation finished:(BOOL)finished
{
 if (finished)
 {
  NSString *animationName = [animation valueForKey:@"animationName"];
  if ([animationName isEqualToString:@"groupAnimation"])
  {
   // your groupAnimation has ended
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

请注意,对于组动画,将忽略在组件动画上设置的代理.

  • 您可能应该解释一下`animationName`是动画上的自定义属性(不是子类,而是在使用setValue:forKey时设置的子类)以及它的工作原理(Core Animation可以为任何键设置值)它的动画(正常的课程不能这样工作))等. (2认同)