把一张图片旋转来做了一个加载动画,但发现动画在加载时跳转了页面返回后没加载完成动画也停止了
方案一:
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"cornerRadius"];
animation.toValue = @(upMenuView.height / 2);
animation.duration = 2;
animation.autoreverses = YES;
animation.repeatCount = CGFLOAT_MAX;
[upMenuView.layer addAnimation:animation forKey:@"cornerRadiusAnim"];
把动画的autoreverses属性设置成YES就解决了
CABasicAnimation属性 说明
duration 动画的时长
repeatCount 重复的次数。不停重复设置为 CGFLOAT_MAX
repeatDuration 设置动画的时间。在该时间内动画一直执行,不计次数。
beginTime 指定动画开始的时间。从开始延迟几秒的话,设置为【CACurrentMediaTime() + 秒数】 的方式
timingFunction 设置动画的速度变化
autoreverses 动画结束时是否执行逆动画
fromValue 所改变属性的起始值
toValue 所改变属性的结束时的值
byValue 所改变属性相同起始值的改变量
方案二:
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
animation.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
animation.toValue = [NSValue valueWithCATransform3D: CATransform3DMakeRotation(M_PI_2, 0.0, 0.0, 1.0) ];
animation.duration = 0.25;
animation.cumulative = YES;
animation.repeatCount = MAXFLOAT;
animation.removedOnCompletion = NO;
今天在研究CABasicAnimation时发现 A页面动画运行正常,跳转到B页面再返回后,A页面的动画不再运行了,这时候只要添加一句代码就可以解决了:animation.removedOnCompletion = NO;










网友评论