View动画-旋转

Posted by Onery on January 21, 2015

#关于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"];