利用animationDidStop处理动画结束需要注意的

使用CABasicAnimation时,利用animationDidStop区分哪个动画结束需要注意到的地方
如下:
CABasicAnimation*rightAni = [CABasicAnimationanimationWithKeyPath:@"strokeEnd"];
rightAni.fromValue=@0;
rightAni.toValue=@1;
rightAni.duration=1.5;
rightAni.delegate=self;
[_rightFlagLayer addAnimation:rightAniforKey:DrawingRightFlag];

按照上面这样写,动画的removedOnCompletion属性默认为YES,运行一次动画就会销毁。结果就是动画结束的代理回调中使用
[_rightFlagLayer animationForKey:DrawingRightFlag]为null。。无法区分是哪种动画
因此一定要加rightAni.removedOnCompletion=NO这句话
完成后的代码如下:

CABasicAnimation*rightAni = [CABasicAnimationanimationWithKeyPath:@"strokeEnd"];
rightAni.fromValue=@0;
rightAni.toValue=@1;
rightAni.duration=1.5;
rightAni.delegate=self;
rightAni.removedOnCompletion=NO;
[_rightFlagLayer addAnimation:rightAniforKey:DrawingRightFlag];

-(void)animationDidStop:(CAAnimation*)anim finished:(BOOL)flag
{
if([_rightFlagLayer animationForKey:DrawingRightFlag] == anim)
{
//此处执行你想要做的事情
}
}

完结!

推荐阅读更多精彩内容

  • 本文转载自:http://www.cocoachina.com/ios/20150105/10812.html 为...
    idiot_lin阅读 725评论 0 1
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 3,457评论 4 10
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 5,355评论 4 23
  • 如果想让事情变得顺利,只有靠自己 -- 夏尔·纪尧姆 上一章介绍了隐式动画的概念。隐式动画是在iOS平台创建动态用...
    雪_晟阅读 348评论 0 1
  • 显式动画 显式动画,它能够对一些属性做指定的自定义动画,或者创建非线性动画,比如沿着任意一条曲线移动。 属性动画 ...
    清风沐沐阅读 892评论 0 3