利用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)
{
//此处执行你想要做的事情
}
}

完结!

你可能感兴趣的:(利用animationDidStop处理动画结束需要注意的)