zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    map按照值排序
    结构体的三种排序方式
    归并排序
    数组模拟双向链表
    二刷斐波那契高精度
    2019年9月训练(贰)区间DP (luogu 4290)
    2019年9月训练(壹)数位DP (HDU 2089)
    2019年8月训练(贰)
    2019年8月训练(壹)二分,三分
    2019年7月训练(柒)
  • 原文地址:https://www.cnblogs.com/loying/p/5143695.html
Copyright © 2011-2022 走看看