CoreAnimation 简介
CoreAnimation 可用在 Mac OS X和iOS平台
CoreAnimation 的动画执行过程都是在后台操作的,不会阻塞主线程。
CoreAnimation 是直接作用在CALayer 上的,并不是UIView。
用一张图来简要介绍一下核心动画成员之间的关系。
关于Animation 的架构
核心动画与UIView动画的区别
核心动画的一切都是假象,并不会真是改变layer的值
UIView 真实改变属性才能有动画
使用场景:
UIView 用在需要交互的地方
核心动画用在不需要交互的地方。
CAAnimation 子类
关键帧动画
CAKeyframeAnimation 简介
关键帧动画,是CAPropertyAnimation的子类
与 CABasicAniamtion 的区别是CABasicAniamtion是从fromValue 到toValue 两个值的变化,而 CAKeyframeAnimation 可以使用 NSArray 来保存这些数值。
属性说明:
values:NSArray 对象,里面的元素就是“关键帧”,动画会在指定的时间内,依次显示 values 数组中的每一个关键帧。
path:可以设置CGPathRef、CGMutablePathRef,让图层按照轨迹移动,path只对CALayer的 anchorPoint 和 point 起作用。如果设置了path, 那么values将被忽略。
keyTimes:关键帧指定对应的时间点,取值范围从0~1,keyTimes中的每一个时间值对应values中的每一帧,如果没有设置,时间是平分的。
CABasicAniamtion 可看做 只有两个关键帧的CAKeyframeAnimation
动画组CAAnimationGroup
CAAnimationGroup
是 CAAnimation 的子类,可以保存一组动画对象,将 CAAnimationGroup 对象加入层之后,族中所有的动画对象可以同时并发运行。
属性说明:
animations:保存一组动画对象的NSArray。
默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的 beginTimer 属性来更改动画的开始时间。
转场动画CATransition
CATransition
为层提供移出屏幕和移入屏幕的动画效果。
UINavigationController就是通过CATransition实现了将控制器推入屏幕的动画效果
动画属性:
type:动画过渡类型
subtype:动画过渡方向
startProgress:动画起点
endProgress:动画终点
CAAnimation (基类)所有动画的父类,不能直接使用
CAPropertyAnimation (属性动画)也是基类,不可直接使用—>通过属性值的改变产生动画效果
CABasicAnimation (基础动画)只能是两个点之间的变化
CASpringAnimation
CAKeyFrameAnimation (关键帧动画)可以添加多个点的变化 或者路径
CAAnimationGRoup(动画组)可以同时添加多种动画,达到预期效果
CATransition(转场动画 )给视图切换的时候 添加动画效果