iOS 关于CABasicAnimation动画完成后执行哪个动画的问题
2016-07-28 16:48
597 查看
当大家使用CABasicAnimation时,有时候会使用多个的CABasicAnimation。如何区分那个动画完成的呢。(CAKeyframeAnimation也是一样)
必须设置removedOnCompletion为NO,不然你获取不到CAAnimation对象和anim对比判断。
代码如下:
创建一个动画
// 初始化动画类 CABasicAnimation * animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; // 最初的动画位置 animation.fromValue = [NSNumber numberWithDouble:1.0]; // 结束的动画位置 animation.toValue = [NSNumber numberWithDouble:0.0]; // 动画间隔时间 animation.duration= 3.0; animation.autoreverses= NO; // 动画完成之后是否还原 animation.removedOnCompletion= NO; // 动画的次数 FLT_MAX=="forever" animation.repeatCount= 1; // 设置代理 animation.delegate = self; // layer层的动画 [self.layer addAnimation:animation forKey:DISMISSANIMATION];
实现代理方法:
#pragma mark -CAAnimationDelegate - (void)animationDidStart:(CAAnimation *)anim { NSLog(@"animationDidStart%@",self.layer.animationKeys); } - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{ NSLog(@"animationDidStop%@",self.layer.animationKeys); NSLog(@"animationDidStop%@",[self.layer animationForKey:DISMISSANIMATION]); if (anim==[self.layer animationForKey:DISMISSANIMATION]) { [self removeFromSuperview]; } }
ps:
刚开始的时候,我创建多个但是[self.layer animationForKey:DISMISSANIMATION]每次都是空对象。最后发现原来是这样的,之前我没有设置 animation的removedOnCompletion属性,默认为yes。// 动画完成之后是否还原 animation.removedOnCompletion= NO;
必须设置removedOnCompletion为NO,不然你获取不到CAAnimation对象和anim对比判断。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- Gifski:一个跨平台的高质量 GIF 编码器
- 模仿动画的放大缩小容器
- jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
- Android实现定制返回按钮动画效果的方法
- Android中ViewFlipper的使用及设置动画效果实例详解
- jQuery实现美观的多级动画效果菜单代码
- php判断GIF图片是否为动画的方法
- jQuery实现动画效果circle实例
- HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
- 浅析JavaScript动画
- js排序动画模拟-插入排序
- javascript+HTML5的Canvas实现Lab单车动画效果
- 基于javascript实现漂亮的页面过渡动画效果附源码下载