iOS Core Animation(核心动画基础篇)

2017-08-24  本文已影响110人  Michael1

基本概念

1. 什么是核心动画

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

图2.png
由上图可以看出Core Animation位于UIKit的下一层,相比UIView动画,它可以实现更复杂的动画效果以及更多可操作的动画属性。
说到核心动画,就必须要知道CALayer,核心动画作用在CALayer,每个View都有其对用的layer,
 @property(nonatomic,readonly,strong)  CALayer  *layer;

UIView添加动画本质上还是对layer进行的操作。当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示。

换句话说,UIView本身不具备显示的功能,是它内部的层才有显示功能。

Core Animation的优点:
2. 核心动画中的类

核心动画中所有类都遵守CAMediaTiming协议。

常见的动画类:
基本属性说明:
属性 说明
duration 动画的持续时间
repeatCount 重复次数,默认的是 0,动画只会播放一次,无限循环可以设置HUGE_VALF或者MAXFLOAT。这个不应该和 RepeatDuration 属性一块使用。
RepeatDuration 重复时间, 这个属性指定了动画应该被重复多久。动画会一直重复,直到设定的时间用完。同上它不应该和 repeatCount 一起使用。
Autoreverses 设定这个属性为 YES 时,在它到达目的地之后,动画的返回到开始的值,代替了直接跳转到开始的值,过渡平滑。
RemovedOnCompletion 这个属性默认为 YES,在指定的时间段完成后,动画就自动的从层上移除了。
fillMode 这个属性一般和 RemovedOnCompletion 配合使用,保持动画状态。其中kCAFillModeForwards 当动画结束后,layer会一直保持着动画最后的状态.此时将RemovedOnCompletion设为NO。
BeginTime 动画开始时间,可以用来设置动画延迟执行时间,若想延迟1s,就设置为CACurrentMediaTime()+1,CACurrentMediaTime()为图层的当前时间。
timingFunction 控制动画运行的节奏. kCAMediaTimingFunctionLinear(线性):匀速,给你一个相对静态的感觉 kCAMediaTimingFunctionEaseIn(渐进):动画缓慢进入,然后加速离开 kCAMediaTimingFunctionEaseOut(渐出):动画全速进入,然后减速的到达目的地 kCAMediaTimingFunctionEaseInEaseOut(渐进渐出):动画缓慢的进入,中间加速,然后减速的到达目的地。这个是默认的动画行为。
delegate 动画代理
Speed 速度,默认的值为 1.0.如果你改变这个值为 2.0,动画会用 2 倍的速度播放。这样的影响就是使持续时间减半。如果你指定的持续时间为 6 秒,速度为 2.0,动画就会播放 3 秒钟即一半的持续时间。
FromValue 设置动画的初始值
ToValue 设置动画的到达值
damping 阻尼系数,阻止弹簧伸缩的系数,阻尼系数越大,停止越快
stiffness 刚度系数(劲度系数/弹性系数),刚度系数越大,形变产生的力就越大,运动越快
mass 质量,影响图层运动时的弹簧惯性,质量越大,弹簧拉伸和压缩的幅度越大
initialVelocity 初始速率,动画视图的初始速度大小 速率为正数时,速度方向与运动方向一致,速率为负数时,速度方向与运动方向相反
settlingDuration 动画结算时间 返回弹簧动画到停止时的估算时间,根据当前的动画参数估算 通常弹簧动画的时间使用结算时间比较准确
上一篇 下一篇

猜你喜欢

热点阅读