
CoreAnimation基本介绍:
- CoreAnimation动画位于iOS框架的Media层
- CoreAnimation动画实现需要添加QuartzCore.Framework
- CoreAnimation基本上是LayerAnimation
CoreAnimation分类:
CoreAnimation作用:
CoreAnimation
CALayer基本介绍
CALayer的常用属性
CABasicAnimation
CAKeyframeAnimation
CAAnimationGroup
CASpringAnimation
XIB分别设置几个button然后关联方法,代码展示:
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView; @end @implementation ViewController
#pragma mark - CABasicAnimation
- (IBAction)CABasicAnimation:(id)sender {
// 第一步:创建动画对象
CABasicAnimation *basicAnimation = [CABasicAnimation animation];
// 第二步:告诉layer层需要执行什么样的动画(后边设置的内容为CALayer的相关属性)
basicAnimation.keyPath = @"position"; // position 改变位置的
// 第三步:告诉layer从哪里来,到哪里去
basicAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(, )];
basicAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(, )];
// 注意点: 如果要实现图片不会到原来点,需要以下两句代码
basicAnimation.removedOnCompletion = NO;
// 设置保存动画状态的内容
basicAnimation.fillMode = kCAFillModeForwards; // 第四步:设置动画持续的时长
basicAnimation.duration = 6.0f;
// 第五步:将要执行的动画添加到calayer上
[self.imageView.layer addAnimation:basicAnimation forKey:@"basic"];
// *************翻转效果
CABasicAnimation *basic = [CABasicAnimation animation];
basic.keyPath = @"transform";
// 设置翻转的地方
basic.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2, , , )];
basic.duration = 0.2f;
[self.imageView.layer addAnimation:basic forKey:@"aaaa"];
// 根据key去移除动画
// [self.imageView.layer removeAnimationForKey:@"basic"];
} #pragma mark - CAKeyframeAnimation
- (IBAction)CAKeyAnimation:(id)sender {
// 第一步:创建对象
CAKeyframeAnimation *keyAnimation = [CAKeyframeAnimation animation];
// 第二步:设置动画轨迹
keyAnimation.keyPath = @"transform.rotation";
// 第三步:设置翻转的角度 (弧度计算公式:度数/180*M_PI)
keyAnimation.values = @[@(- / 180.0 * M_PI), @( / 180.0 * M_PI), @(- / 180.0 * M_PI)];
// 第四步:设置时长
keyAnimation.duration = 15.0f;
// 第五步:添加动画到layer层
[self.view.layer addAnimation:keyAnimation forKey:@"bbbb"];
} #pragma mark - CAAnimationGroup
- (IBAction)CAAnimationGroup:(id)sender {
// 平移动画
CABasicAnimation *basic1 = [CABasicAnimation animation];
basic1.keyPath = @"transform.translation.y"; // 按照y轴平移
basic1.toValue = @();
// 缩小动画
CABasicAnimation *basic2 = [CABasicAnimation animation];
basic2.keyPath = @"transform.scale"; // 缩小
basic2.toValue = @(0.3);
// 旋转动画
CABasicAnimation *basic3 = [CABasicAnimation animation];
basic3.keyPath = @"transform.rotation"; // 旋转
basic3.toValue = @(M_PI); // 需要创建管理各个动画的动画组
CAAnimationGroup *group = [CAAnimationGroup animation];
group.animations = @[basic1,basic2,basic3];
// group 会自动分配时间
group.duration = 5.0f; [self.imageView.layer addAnimation:group forKey:@"ccccc"];
} #pragma mark - CASpring
- (IBAction)CASpring:(id)sender {
// 设置对象
CASpringAnimation *spring = [CASpringAnimation animation];
spring.keyPath = @"transform.scale";
spring.fromValue = @;
spring.toValue = @0.2;
spring.duration = 3.0f; [self.imageView.layer addAnimation:spring forKey:@"ddddd"];
} @end
总结: