核心动画(Core Animation)框架
lCore Animation是一组很是强大的动画处理API,使用它能作出很是炫丽的动画效果,并且每每是事半功倍,使用它须要先添加QuartzCore.framework和引入对应的框架<QuartzCore/QuartzCore.h>
开发步骤:
①初始化一个动画对象(CAAnimation)并设置一些动画相关属性
②添加动画对象到层(CALayer)中,开始执行动画
CALayer中不少属性均可以经过CAAnimation实现动画效果,包括:opacity、position、transform、bounds、contents等(能够在API文档中搜索:CALayer Animatable Properties)
经过调用CALayer的addAnimation:forKey增长动画到层(CALayer)中,这样就能触发动画了。经过调用removeAnimationForKey能够中止层中的动画
Core Animation的动画执行过程都是在后台操做的,不会阻塞主线程
Animation:函数
全部动画对象的父类,负责控制动画的持续时间和速度,是个抽象类,不能直接使用,应该使用它具体的子类
属性解析:(红色表明来自CAMediaTiming协议的属性)
duration:动画的持续时间
repeatCount:动画的重复次数
repeatDuration:动画的重复时间
removedOnCompletion:默认为YES,表明动画执行完毕后就从图层上移除,图形会恢复到动画执行前的状态。若是想让图层保持显示动画执行后的状态,那就设置为NO,不过还要设置fillMode为kCAFillModeForwards
fillMode:决定当前对象在非active时间段的行为.好比动画开始以前,动画结束以后
beginTime:能够用来设置动画延迟执行时间,若想延迟2s,就设置为CACurrentMediaTime()+2,CACurrentMediaTime()为图层的当前时间
timingFunction:速度控制函数,控制动画运行的节奏
delegate:动画代理
CATransition
CAAnimation的子类,用于作转场动画,可以为层提供移出屏幕和移入屏幕的动画效果。iOS比Mac OS X的转场动画效果少一点
UINavigationController就是经过CATransition实现了将控制器的视图推入屏幕的动画效果
属性解析:
type:动画过渡类型
subtype:动画过渡方向
startProgress:动画起点(在总体动画的百分比)
endProgress:动画终点(在总体动画的百分比)
过渡效果
fade //交叉淡化过渡(不支持过渡方向) kCATransitionFade
push //新视图把旧视图推出去 kCATransitionPush动画
moveIn //新视图移到旧视图上面 kCATransitionMoveIn
reveal //将旧视图移开,显示下面的新视图 kCATransitionReveal
cube //立方体翻滚效果
oglFlip //上下左右翻转效果
suckEffect //收缩效果,如一块布被抽走(不支持过渡方向)
rippleEffect //滴水效果(不支持过渡方向)
pageCurl //向上翻页效果
pageUnCurl //向下翻页效果
cameraIrisHollowOpen //相机镜头打开效果(不支持过渡方向)
cameraIrisHollowClose //相机镜头关上效果(不支持过渡方向)
过分方向:
kCATransitionFromRight
kCATransitionFromLeft
kCATransitionFromBottom
kCATransitionFromTop
•CATransition的使用
CATransition *anim = [CATransition animation];url
anim.type = @“cube”; // 动画过渡类型spa
anim.subtype = kCATransitionFromTop; // 动画过渡方向线程
anim.duration = 1; // 动画持续1s代理
// 代理,动画执行完毕后会调用delegate的animationDidStop:finished:orm
anim.delegate = self;对象