//CABasicAnimation
这里一个简单的例子
- (void)scaleLayer {
//初始化caLayer
CALayer * scaleLayer = [[CALayer alloc]init];
scaleLayer.backgroundColor = [UIColor blueColor].CGColor;
scaleLayer.frame = CGRectMake(100, 100, 100, 100);
scaleLayer.cornerRadius = 10;
scaleLayer.contents = (id)[UIImage imageNamed:@"1"].CGImage;
[self.view.layer addSublayer:scaleLayer];
//设定动画
//path
//transform
//rotaion(x,y,z) scale(x,y,z) translation(x,y,z)
//eg: transform.scale.x
/**
* CABasicAnimation 主要需要设置 的值
1.keyPath:指定该动画怎么样执行
2.fromValue toValue
3.autonreverses 回来的动画
4.repeatCount 重复次数
5.duration 持续时间
6.fillMode 模式
*/
CABasicAnimation * scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
scaleAnimation.fromValue = @(1.0);
scaleAnimation.toValue = @(1.5);
scaleAnimation.autoreverses = YES;// 这个是 从 1.0=》1.5 然后从 1.5=》1.0 (两次动画算一次动画)。如果是NO就是一直从1.0=》1.5(一次动画)
scaleAnimation.repeatCount = MAXFLOAT;
scaleAnimation.duration = 0.8;
scaleAnimation.removedOnCompletion = NO;
/**
测试的时候 把 repeatCount = 1
removedOnCompletion = NO 才有下面的效果
kCAFillModeForwards: 保持最后的动画状态( 动画时间点向前 = 》 过了初始状态)
kCAFillModeBackwards:保持初始状态(动画时间点向后=》 初始状态)
kCAFillModeBoth
kCAFillModeRemoved
开始(backward)-----动画执行------> 结束(Forword)
*/
scaleAnimation.fillMode = kCAFillModeForwards;
//开始执行动画
[scaleLayer addAnimation:scaleAnimation forKey:@"scaleAnimation"];
}