Core Animation。中文翻译为核心动画,它是一组很强大的动画处理API,使用它能做出很炫丽的动画效果。并且往往是事半功倍。
也就是说,使用少量的代码就能够实现很强大的功能。 Core Animation能够用在Mac OS X和iOS平台。
Core Animation的动画运行过程都是在后台操作的,不会堵塞主线程。 要注意的是,Core Animation是直接作用在CALayer上的,并不是UIView。
乔帮主在2007年的WWDC大会上亲自为你演示Core Animation的强大
假设是xcode5之前的版本号,使用它须要先加入QuartzCore.framework和引入相应的框架<QuartzCore/QuartzCore.h> 开发步骤: 1.使用它须要先加入QuartzCore.framework框架和引入主头文件<QuartzCore/QuartzCore.h> 2.初始化一个CAAnimation对象。并设置一些动画相关属性 3.通过调用CALayer的addAnimation:forKey:方法添加CAAnimation对象到CALayer中。这样就能開始运行动画了 4.通过调用CALayer的removeAnimationForKey:方法能够停止CALayer中的动画注意:图中的黑色虚线代表“继承”某个类,红色虚线代表“遵守”某个协议
是全部动画对象的父类,负责控制动画的持续时间和速度,是个抽象类。不能直接使用,应该使用它详细的子类 属性说明:(红色代表来自CAMediaTiming协议的属性) duration:动画的持续时间 repeatCount:反复次数,无限循环能够设置HUGE_VALF或者MAXFLOAT repeatDuration:反复时间 removedOnCompletion:默觉得YES,代表动画运行完成后就从图层上移除。图形会恢复到动画运行前的状态。假设想让图层保持显示动画运行后的状态。那就设置为NO,只是还要设置fillMode为kCAFillModeForwards fillMode:决定当前对象在非active时间段的行为。比方动画開始之前或者动画结束之后 beginTime:能够用来设置动画延迟运行时间。若想延迟2s。就设置为CACurrentMediaTime()+2,CACurrentMediaTime()为图层的当前时间 timingFunction:速度控制函数,控制动画运行的节奏 delegate:动画代理
fillMode属性值(要想fillMode有效,最好设置removedOnCompletion = NO)
kCAFillModeRemoved 这个是默认值,也就是说当动画開始前和动画结束后。动画对layer都没有影响。动画结束后。layer会恢复到之前的状态 kCAFillModeForwards 当动画结束后,layer会一直保持着动画最后的状态 kCAFillModeBackwards 在动画開始前。仅仅须要将动画加入了一个layer,layer便马上进入动画的初始状态并等待动画開始。 kCAFillModeBoth 这个事实上就是上面两个的合成.动画加入后開始之前。layer便处于动画初始状态,动画结束后layer保持动画最后的状态
这个是默认的动画行为。
是CAAnimation的子类,也是个抽象类。要想创建动画对象,应该使用它的两个子类: CABasicAnimation CAKeyframeAnimation
属性说明: keyPath:通过指定CALayer的一个属性名称为keyPath(NSString类型),并且对CALayer的这个属性的值进行改动,达到相应的动画效果。
比方,指定@“position”为keyPath。就改动CALayer的position属性的值,以达到平移的动画效果
基本动画,是CAPropertyAnimation的子类
属性说明: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值
动画过程说明: 随着动画的进行。在长度为duration的持续时间内。keyPath相应属性的值从fromValue渐渐地变为toValue keyPath内容是CALayer的可动画Animatable属性 假设fillMode=kCAFillModeForwards同一时候removedOnComletion=NO。那么在动画运行完成后,图层会保持显示动画运行后的状态。但在实质上。图层的属性值还是动画运行前的初始值。并没有真正被改变。
关键帧动画,也是CAPropertyAnimation的子类,与CABasicAnimation的差别是: CABasicAnimation仅仅能从一个数值(fromValue)变到还有一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值
属性说明: values:上述的NSArray对象。
里面的元素称为“关键帧”(keyframe)。动画对象会在指定的时间(duration)内。依次显示values数组中的每个关键帧 path:能够设置一个CGPathRef、CGMutablePathRef。让图层依照路径轨迹移动。
path仅仅对CALayer的anchorPoint和position起作用。
假设设置了path。那么values将被忽略 keyTimes:能够为相应的关键帧指定相应的时间点,其取值范围为0到1.0。keyTimes中的每个时间值都相应values中的每一帧。假设没有设置keyTimes,各个关键帧的时间是平分的
CABasicAnimation可看做是仅仅有2个关键帧的CAKeyframeAnimation
动画组,是CAAnimation的子类。能够保存一组动画对象,将CAAnimationGroup对象加入层后,组中全部动画对象能够同一时候并发运行
属性说明: animations:用来保存一组动画对象的NSArray 默认情况下,一组动画对象是同一时候运行的。也能够通过设置动画对象的beginTime属性来更改动画的開始时间
CATransition是CAAnimation的子类。用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。
iOS比Mac OS X的转场动画效果少一点 UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果 动画属性: type:动画过渡类型 subtype:动画过渡方向 startProgress:动画起点(在总体动画的百分比) endProgress:动画终点(在总体动画的百分比)
CADisplayLink是一种以屏幕刷新频率触发的时钟机制,每秒钟运行大约60次左右 CADisplayLink是一个计时器,能够使画图代码与视图的刷新频率保持同步,而NSTimer无法确保计时器实际被触发的准确时间 用法: 定义CADisplayLink并制定触发调用方法 将显示链接加入到主运行循环队列
转载于:https://www.cnblogs.com/brucemengbm/p/7382792.html
相关资源:ios-CoreAnimation加载动画.zip