CoreAnimation

简介:

  • 1.核心动画是直接作用在CALayer上的,并非UIView

  • 2.核心动画的执行过程都是在后台进行,不会阻塞主线程

动画类型:

  • 1.CABasicAnimation:基本动画,设定某个属性从某个值到某个值

  • 2.CAKeyFrameAnimation:关键帧动画,设定某个属性的值从某个值到某个值,再到某个值,积累的关键值挨着去做

  • 3.CAAnimationGroup:组动画,把其他的动画对象添加到组里面,将添加的动画对象一次执行

  • 4.CATransitionAnimation:转场动画,从一个场景切换到另一个场景,系统已经实现,不需要我们自己写

  • 5.CAPropertyAnimation:属性动画,它是CABasicAnimation和CAKeyFrameAnimation的父类

基本使用:

  • 1.创建动画对象:实例化的时候必须调用类方法,animateWithKeyPath:这个keyPath就是设定要执行动画的属性

  • 2.设置动画属性

  • 3.把动画对象添加到某个Layer上

  • 4.若需要停止啊动画,可以调用remove方法移除动画


1.CABasicAnimation使用示例:

属性值:fromValue,toValue,byValue

    //1.实例化动画变量,keyPath就是设置要执行动画的属性
    CABasicAnimation *anima = [CABasicAnimation animationWithKeyPath:@"position.y"];

    // 2.0设置时间
    anima.duration = 0.5;

  // 2.1设置属性
    anima.fromValue  = @50;  
    anima.toValue = @500;

  //  2.2 设置动画的代理
    anima.delegate = self;

    //2.3设置结束时候不要闪回去
    anima.fillMode = kCAFillModeForwards;
    anima.removedOnCompletion = NO;

    // 3.添加到按钮的layer上
    [self.blueView.layer addAnimation:anima forKey:nil];
  • UIBasicAnimation 的keyPath如下

.CAKeyFrameAnimation

  • 0.实例化跟上面的基本动画相似,必须调用类方法,通过设定keyPath告诉系统需要执行动画的属性,假设实例化出来的对象叫anima

  • 1.属性值:

    • values:一个存储NSValue对象的数组,外界将需要执行动画的几个帧的画面所在的点的位置转化成NSValue对象,保存在数组中,然后赋值给实例化出来的anima对象的values属性

    • path:外界可以将一个bezierPath对象转化成CGPath对象,赋值给anima.path

    • repeatCount:动画重复次数

3.CAAnimationGroup

    // 1.创建组动画对象
    CAAnimationGroup *group = [CAAnimationGroup animation];

    // 2.设置动画属性,demo2,demo3,demo4都是不同的动画对象
    group.animations = @[
                         [self demo2],
                         [self demo3],
                         [self demo4],
                         ];
    group.duration = 2;
    group.repeatCount = CGFLOAT_MAX;

    // 3.添加到layer上
    [self.magLayer addAnimation:group forKey:nil];

4.CAAnimation

一般情况下不需要我们自己写,系统已经实现.

  • 下面来一个特殊的示例,就是支持左右两个方向的转场动画的实现,通过设置转场动画的属性,实现不同的动画效果.

#pragma mark - 2.轻扫触发
- (void)swipeAction:(UISwipeGestureRecognizer *)recognizer {

    // MARK: - 转场动画
    // 1.创建动画对象
    CATransition *anim = [CATransition animation];

    // 两个属性 type[动画的类型], subType[子类型]

    // 2.设置动画属性
    anim.type = kCATransitionReveal;

    if (recognizer.direction == UISwipeGestureRecognizerDirectionRight) {

        NSLog(@"向右");

        self.idx--;
        if (self.idx == 0) {
            self.idx = 5;
        }

        anim.subtype = kCATransitionFromLeft;

    } else {

        NSLog(@"向左");

        self.idx++;
        if (self.idx == 6) {
            self.idx = 1;
        }

        anim.subtype = kCATransitionFromRight;
    }

     // 3.添加动画
    [_imgView.layer addAnimation:anim forKey:nil];





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值