• CATransition


     

       //设置类型有两种方式,一种是字符串,一种是系统宏
        //  anim.type = @"cube";
        //  anim.type = kCATransitionPush;

       //subtype: 设置方向

       //  anim.subtype = kCATransitionFromRight;

    //动画持续时间
        //    anim.duration = 1;
        
        // 设置动画进度.0->1
        //    anim.startProgress = 0.5;  从动画进行一半开始
        //    anim.endProgress = 0.5;    动画进行一半结束
        
        
        CATransition *anim = [CATransition animation];
        anim.type = @"cube";
        anim.subtype = kCATransitionFromRight;
        anim.duration = 1;
        [self.redView.layer addAnimation:anim forKey:nil];

    CATransition类继承于CAAnimation类,提供的是过滤的效果,如pushfadereveal等。

    type属性是用于指定效果类型,当前官方提供的效果有fademoveInpushreveal. 默认为fade。对于其它类型,如cube立体效果这种官方没有公开,也不清楚是否是使用私有。

    subtype属性是可选的,主要用于指定动画的方向。比如动作类动画效果中,有从左边进入、从右边进入等效果。

    这两个属性可以设置动画动作的进度,默认为0->1。

    filter属性默认为nil,一旦设置了此属性,typesubtype就会被忽略。 这个属性意思就是滤镜的意思吧,它需要实现inputImageinputTargetImageinputTimeoutputImage,当然还有一个可选的inputExtent,不要求实现。

    更多基础知识,请参考:CAAnimation精讲

    实战练习做动画


    先看看我们做效果图:

    image

    常用的transition动画几乎都有了,而且笔者在学习的同时,也这将些动画封装成了一个类方法,只需要一行代码就可以实现动画效果了哦!

    头文件声明

    这里只公共了一个方法,并将常用的动画使用一个枚举类型来指定,不用再记着那些单词了。

    实现文件

    其实实现的代码也很简单,只是对枚举类型判断一下,然后添加动画:

    解析

    我们的核心添加动画的代码是:

    系统提供给我们一些动画是在UIView上提供的方法,我们可以看看这个枚举:

    我们添加动画只需要调用UIView添加动画的方法就可以实现了:

    测试效果


    我们在ViewController这里尝试一下效果,这里只是使用定时器每一秒就自动切换一种效果:

  • 相关阅读:
    递归和迭代
    The Rose
    读周国平作品有感
    matlab最小二乘法数据拟合函数详解
    读周国平作品有感
    three.js之创建一条直线
    three.js之创建一个几何体
    Go语言标准库之strconv
    Go语言基础之网络编程
    Go语言基础之并发
  • 原文地址:https://www.cnblogs.com/jiayongqiang/p/5339664.html
Copyright © 2020-2023  润新知