美文网首页
ios核心动画

ios核心动画

作者: hello_kity | 来源:发表于2017-02-27 16:07 被阅读25次

    Core Animation(核心动画)是一组功能强大、效果华丽的动画API,无论在iOS系统或者在你开发的App中,都有大量应用。

    15AE921F-E112-4859-86D0-2AD6F11D9B57.png

    可以看到,核心动画位于UIKit的下一层,相比UIView动画,它可以实现更复杂的动画效果。
    核心动画作用在CALayer上。每一个View都有其对应的layer,这个layer是root layer.
    给view加上动画,本质上是对其layer进行操作,layer包含了各种支持动画的属性,动画则包含了属性变化的值、变化的速度、变化的时间等等,两者结合产生动画的过程。
    核心动画的优点就是:性能强大 使用硬件加速 可以同时向多个图层添加不同的动画效果,接口易用,只需要少量的代码可以实现复杂的动画效果。运行在后台的线程中 在动画过程中可以响应交互事件。
    CAAnimation是所有动画对象的父类负责控制动画的时间 速度 和时间曲线,是一个抽象类 不能直接使用。
    CAPropertyAnimation:CAAnimation的子类 支持动画地显示图层的keyPath,一般不直接使用。
    ios 9.0之后新增CASpringAnimation类 它实现弹簧效果动画,是CABasicAnimation的子类。
    核心动画类中可以直接使用的类有:
    CABasicAnimation
    CAKeyframeAnimation
    {重要属性:
     type:过渡动画的类型
    type的enum值如下:
    kCATransitionFade 渐变
    kCATransitionMoveIn 覆盖
    kCATransitionPush 推出
    kCATransitionReveal 揭开
    subtype的enum值如下:
    kCATransitionFromRight 从右边
    kCATransitionFromLeft 从左边
    kCATransitionFromTop 从顶部
    kCATransitionFromBottom 从底部
    }
    CATransition
    CAAnimationGroup
    CASpringAnimation
    核心动画类的核心方法
    初始化 设置动画的相关属性 动画的添加和移除
    keypath 可以指定keypath为CALayer的属性值,并对它的值进行修改,以达到对应的动画效果,需要注意的是部分属性是不支持动画效果的
    timeFunction:动画的时间节奏控制
    timingFunctionName的enum值如下:
    kCAMediaTimingFunctionLinear 匀速
    kCAMediaTimingFunctionEaseIn 慢进
    kCAMediaTimingFunctionEaseOut 慢出
    kCAMediaTimingFunctionEaseInEaseOut 慢进慢出
    kCAMediaTimingFunctionDefault 默认值(慢进慢出)
    CAKeyframeAnimation 可以设定keyPath起点、中间关键点(不止一个)、终点的值,每一帧所对应的时间,动画会沿着设定点进行移动。
    CAKeyframeAnimation的重要属性:values关键帧数组对象 里面每一个元素即为一个关键帧 动画会在duration时间内执行数组中每一个关键帧的动画。
    path 动画路径对象 可以指定一个路径,在执行动画时会沿着路径移动,path在动画中会影响视图的position。

    CATransition 转场动画, 苹果私有api 使用需注意可能被打回
    ani.type = @"cube";//--立方体
    ani.type = @"suckEffect";// 吸走的效果
    ani.type = @"oglFlip";//When subType is "fromLeft" or "fromRight", it's the official one.//前后翻转效果
    ani.type = @"rippleEffect";//波纹效果
    ani.type = @"pageCurl";//翻页起来
    ani.type = @"pageUnCurl";//翻页下来
    ani.type = @"cameraIrisHollowOpen ";//镜头开
    ani.type = @"cameraIrisHollowClose ";//镜头关

    CASpringAnimation 是ios9新加入的动画类型,是CABasicAnimation的子类,用于实现弹簧动画。
    CASpringAnimation的重要属性:
     mass:质量(影响弹簧的惯性,质量越大,弹簧惯性越大,运动的幅度越大)
     stiffness:弹性系数(弹性系数越大,弹簧的运动越快)
     damping:阻尼系数(阻尼系数越大,弹簧的停止越快)
    initialVelocity:初始速率(弹簧动画的初始速度大小,弹簧运动的初始方向与初始速率的正负一致,若初始速率为0,表示忽略该属性)
    settlingDuration:结算时间(根据动画参数估算弹簧开始运动到停止的时间,动画设置的时间最好根据此时间来设置)
    CAAnimationGroup
    使用Group可以将多个动画合并一起加入到层中,Group中所有动画并发执行,可以方便地实现需要多种类型动画的场景

    相关文章

      网友评论

          本文标题:ios核心动画

          本文链接:https://www.haomeiwen.com/subject/mikzwttx.html