CABasicAnimation简介
CABasicAnimation是CAPropertyAnimation的子类,使用它可以实现一些基本的动画效果,它可以让CALayer的某个属性从某个值渐变到另一个值。下面就用CABasicAnimation实现几个简单的动画。
先初始化一个view
UIView * greenView = [[UIView alloc] init];
greenView.backgroundColor = [UIColor greenColor];
greenView.frame = CGRectMake(100, 100, 100, 100);
self.greenView = greenView;
[self.view addSubview:greenView];
1>平移动画
<span style="color:#333333;">- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
// 实例化CABasicAnimation对象
CABasicAnimation * anim = [CABasicAnimation animation];
// 设置属性
anim.keyPath = @"position";
anim.duration = 1.0;
anim.repeatCount = 1;
anim.fromValue = [NSValue valueWithCGPoint:CGPointMake(60, 80)];
anim.toValue = [NSValue valueWithCGPoint:CGPointMake(200, 200)];
</span><span style="color:#ff0000;">anim.fillMode = kCAFillModeForwards;
anim.removedOnCompletion = NO;</span><span style="color:#333333;">
// 将动画添加到layer上
[self.greenView.layer addAnimation:anim forKey:@"123"];
}
</span>
点击屏幕从(60,80)移动到(200,200),如果没有fillMode和remoovedOnCompletion属性设置的话,在动画结束后会回到原来的位置(100,100)。
2>缩放动画
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
// 实例化CABasicAnimation对象
CABasicAnimation * anim = [CABasicAnimation animation];
// 设置属性
anim.keyPath = @"bounds";
anim.duration = 1.0;
anim.repeatCount = 1;
anim.toValue = [NSValue valueWithCGRect:CGRectMake(100, 100, 30, 30)];
// anim.fillMode = kCAFillModeForwards;
// anim.removedOnCompletion = NO;
// 将动画添加到layer上
[self.greenView.layer addAnimation:anim forKey:@"123"];
}
如果将fillMode和removeOnCompletion注释掉的话在缩小到(30,30)的时候还会回到原来的(100,100)
3>旋转动画
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
// 实例化CABasicAnimation对象
CABasicAnimation * anim = [CABasicAnimation animation];
// 设置属性
anim.keyPath = @"transform";
anim.duration = 1.0;
anim.repeatCount = 1;
anim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_4, 0, 0, 1)];
anim.fillMode = kCAFillModeForwards;
anim.removedOnCompletion = NO;
// 将动画添加到layer上
[self.greenView.layer addAnimation:anim forKey:@"123"];
}
绕z轴顺时针旋转45度