#关于View旋转动画
###我遇到的一些坑
之前项目需要一个View 360度旋转动画的效果 遇到了一些坑 在此记录一下如何让View反复执行动画 而不是在动画停止后再调用动画开始的方法,你需要设置repeatCount
属性 (多看文档还是有好处的),animation.repeatCount = HUGE_VALF
则表示一直重复此动画,以为这样就OK了?呵呵
那么问题就来了 程序进入后台(按home键)之后 再次进入程序 呢玛 动画停了 什么原因呢? google一下发现是
当你离开了应用后(比如进入了后台),所有的动画都从他们的layer上移除了:因为系统调用了removeAllAnimations,针对所有的layer.
既然知道原因了 看一下文档 发现有这样一个属性removedOnCompletion
官方说明是酱紫的
`/* When true, the animation is removed from the render tree once its
* active duration has passed. Defaults to YES. */`
那我们就把该属性设为NO试试 运行之后 OK~~~
上代码
CABasicAnimation *spinAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
spinAnimation.byValue = [NSNumber numberWithFloat:2*M_PI];
spinAnimation.duration = self.animationDuration;
// spinAnimation.delegate = self;
// spinAnimation.cumulative = YES;//是否累计
spinAnimation.repeatCount = HUGE_VALF;//重复次数 无限重复
// 动画完成时删除
// 对于循环播放的动画效果,一定要将 removedOnCompletion 设置为 NO,否则无法恢复动画
[spinAnimation setRemovedOnCompletion:NO];
[self addAnimation:spinAnimation forKey:@"spinAnimation"];