- OpenGL ES是个C语言写的非常底层的图形处理框架
- 是个移动设备上绘制2D和3D计算机图形的标准开源库,广泛地被用在游戏的图形绘制上,负责直接驱动GPU,效率非常高,缺点是使用起来异常复杂。
- Core Animation是对OpenGL ES的Objective-C封装
- 具有与OpenGL ES几乎等价的高性能,却隐藏了OpenGL ES的复杂性。
一、Core Animation 核心动画
- Core Animation可以用在Mac OS X和iOS平台。
- Core Animation的动画执行过程都是在
后台操作
的,不会阻塞主线程。 - 还有一点需要注意:Core Animation是直接作用在CALayer上的,并非UIView。
二、Core Animation的使用步骤
- 注意:如果不是xcode5之后的版本,使用它需要先添加QuartzCore.framework和引入对应的框架<QuartzCore/QuartzCore.h>
1、使用步骤
- 1.首先得有CALayer
- 2.初始化一个CAAnimation对象,并设置一些动画相关属性
- 3.通过调用CALayer的addAnimation:forKey:方法,添加CAAnimation对象到CALayer中,这样就能开始执行动画了
- 4.通过调用CALayer的removeAnimationForKey:方法可以停止CALayer中的动画
三、CAAnimation
- 要想执行动画,就必须初始化一个CAAnimation对象。下面介绍CAAnimation
核心动画中所有类都遵守CAMediaTiming
注意:CAAnaimation是个抽象类,不具备动画效果,CAPropertyAnimation也是个抽象类,本身不具备动画效果,只有它们的子类才有
可用动画类 : CAAnimationGroup 、CATransition、CABasicAnimation和CAKeyframeAnimation
CAAnimationGroup:动画组,可以同时进行缩放,旋转等动画
CATransition:转场动画,界面之间跳转都可以用转场动画
CABasicAnimation:基本动画,做一些简单效果
CAKeyframeAnimation:帧动画,做一些连续的流畅的动画
四、CAAnimation的常用属性
duration:动画的持续时间
repeatCount:动画的重复次数
timingFunction:控制动画运行的节奏
---> timingFunction可选的值有:
--- kCAMediaTimingFunctionLinear(线性):匀速,给你一个相对静态的感觉
--- kCAMediaTimingFunctionEaseIn(渐进):动画缓慢进入,然后加速离开
--- kCAMediaTimingFunctionEaseOut(渐出):动画全速进入,然后减速的到达目的地
--- kCAMediaTimingFunctionEaseInEaseOut(渐进渐出):动画缓慢的进入,中间加速,然后减速的到达目的地。这个是默认的动画行为。
delegate:动画代理(CAAnimationDelegate),用来监听动画的执行过程
@interface NSObject (CAAnimationDelegate)
// 动画开始执行的时候触发这个方法
- (void)animationDidStart:(CAAnimation *)anim;
// 动画执行完毕的时候触发这个方法
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;
@end
4> delegate:动画代理,用来监听动画的执行过程