CoreAnimation

之前介绍的是UIView 的动画(http://www.cnblogs.com/loying/p/5122253.html),这次介绍的是CAAnimation的动画。

在xcode中打开 CAAnimation.h ,可以看到以下几个类:

CAAnimation 所有动画对象的父类。(不能直接使用)

CAPropertyAnimation 关于layer属性的动画。(不能直接实用)

CABasicAnimation 基本动画,可以直接使用的一个属性动画,CAPropertyAnimation的子类。

CAKeyframeAnimation  关键帧动画,可以直接使用,CAPropertyAnimation的子类。

CASpringAnimation 弹簧动画,可以直接使用,CABasicAnimation的子类。

CATransition 过场动画,可以直接实用,CAAnimation的子类。

CAAnimationGroup 动画组,可以添加多个动画,CAAnimation的子类。

以下是做出来的效果

 

 

举个例子,这个是动画组: 

- (IBAction)onGroup:(id)sender {

    CAAnimationGroup* group = [[CAAnimationGroup alloc] init]; 

    group.removedOnCompletion = NO; //动画结束后是否移除

    group.beginTime = CACurrentMediaTime() + 0.5;  //动画开始时间为当前时间+0.5s

    group.fillMode = kCAFillModeBoth; //动画完成后继续保留

    group.delegate = self;

    group.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; //动画进行时间函数

    group.duration = 2;

    CABasicAnimation* position = [CABasicAnimation animationWithKeyPath:@"position.x"]; //关于position的x属性的动画

    position.fromValue = @(10); //注意要用nsNumber

    position.toValue = @(100);

    CABasicAnimation* scale = [CABasicAnimation animationWithKeyPath:@"transform.scale"];

    scale.fromValue = @(0.5);

    scale.toValue = @(2);

    group.animations = @[position, scale];

    [self.myImageView.layer addAnimation:group forKey:nil]; //把动画添加到layer

}

 

具体可以看以下的例子: 

https://github.com/loyinglin/LearnLayerAnimations

原文地址:https://www.cnblogs.com/loying/p/5143695.html