/***
CABasicAnimation
使用方法animationWithKeyPath" 对CABasicAnimation 进行实例化注册,并指定layer的属性作为关键路径注册
CABasicAnimation *transformAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
属性
duration 动画时长
repeatCont 重复次数。持续不停设置HUGE_VALF
repeatDuration :设置重复动画时间,在该时间内,动画一直执行,不计次数。
beginTime :指定动画开始的时间。默认立即开始。需要延迟的话设置为【CACurrentMediaTime()+秒数】的方式
timingFunction:设置动画的速度变化
autoreverses 动画结束的时候,是否执行逆动画
fromValue 所改变属性的起始值
tovalue 所改变属性结束时的值
byValue 所改变属性相同起始值得改变量
timingFunction:{
transformView.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear
kCAMediaTimingFunctionLinear :匀速运动
kCAMediaTimingFunctionEaseIn :由慢到快,加速
kCAMediaTimingFunctionEaseOut:由快到慢,减速
kCAMediaTimingFunctionEaseInEaseOut:动画在开始和结束的时候慢,中间时间快
}
fillMode
该属性定义了你的动画在开始和结束时的动作。默认值是 kCAFillModeRemoved
kCAFillModeRemoved :动画将在设置的beginTime开始执行(如果没设置,则动画立即执行),动画完成后layer 降恢复到初始状态
kCAFillModeForwards 设置为该值,动画即使之后layer的状态将保持在动画的最后一帧,而removedOnCompletion的默认属性值是 YES,所以为了使动画结束之后layer保持结束状态,应将removedOnCompletion设置为NO。
kCAFillModeBackwards 设置为该值,将会立即执行动画的第一帧,不论是否设置了 beginTime属性
kCAFillModeBoth 该值是 kCAFillModeForwards 和 kCAFillModeBackwards的组合状态
removedOnCompletion// 结束的时候移除
*/
例子 图片沿着x轴旋转
CABasicAnimation *transformView = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];
transformView.fromValue =@(0);
transformView.toValue = @(M_PI*2);
transformView.repeatCount = HUGE_VALF;
transformView.repeatDuration = HUGE_VALF;
transformView.duration = 2;
transformView.removedOnCompletion = NO;
transformView.fillMode = kCAFillModeForwards;
transformView.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
[imageview.layer addAnimation:transformView forKey:@"animation"];
常用的
animationWithKeyPath总结
transform.scale 比例转化 @(0.8)
transform.scale.x 宽的比例 @(0.8)
transform.scale.y 高的比例 @(0.8)
transform.rotation.x 围绕x轴旋转 @(M_PI)
transform.rotation.y 围绕y轴旋转 @(M_PI)
transform.rotation.z 围绕z轴旋转 @(M_PI)
cornerRadius 圆角的设置 @(50)
backgroundColor 背景颜色的变化 (id)[UIColor purpleColor].CGColor
bounds 大小,中心不变 [NSValue valueWithCGRect:CGRectMake(0, 0, 200, 200)];
position 位置(中心点的改变) [NSValue valueWithCGPoint:CGPointMake(300, 300)];
contents 内容,比如UIImageView的图片 imageAnima.toValue = (id)[UIImage imageNamed:@"to"].CGImage;
opacity 透明度 @(0.7)
contentsRect.size.width 横向拉伸缩放 @(0.4)最好是0~1之间的
//折线图 会用到 strokeStart strokeEnd
strokeStart 动画的fromValue = 0,toValue = 1
表示从路径的0位置画到1 怎么画是按照清除开始的位置也就是清除0 一直清除到1 效果就是一条路径慢慢的消失
trokeStart 动画的fromValue = 1,toValue = 0
表示从路径的1位置画到0 怎么画是按照清除开始的位置也就是1 这样开始的路径是空的(即都被清除掉了)一直清除到0 效果就是一条路径被反方向画出来
strokeEnd 动画的fromValue = 0,toValue = 1
表示 这里我们分3个点说明动画的顺序 strokeEnd从结尾开始清除 首先整条路径先清除后2/3,接着清除1/3 效果就是正方向画出路径
strokeEnd 动画的fromValue = 1,toValue = 0
效果就是反方向路径慢慢消失
注释: 动画的0-1(fromValue = 0,toValue = 1) 或1-0 (fromValue = 1,toValue = 0) 表示执行的方向 和路径的范围