核心动画CoreAnimation:1-简介
CoreAnimation框架是苹果的核心技术之一,iOS以及MacOS之所以大受欢迎,其中一个重要的原因在于能够提供非常炫酷的动画效果,同时其对硬件的要求很低。
CoreAnimation简介
Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍。也就是说,使用少量的代码就可以实现非常强大的功能。Core Animation的动画执行过程都是在后台操作的,因此不会阻塞主线程。
我们之前介绍了CALayer类,核心动画是直接作用于CALayer对象上的。如下图所示,当我们对一个UIView视图对象显示的内容进行旋转操作时,其本质是修改UIView的layer属性,对layer所展示的样式进行旋转操作后,再渲染到屏幕上。
CAAnimation类
CAAnimation类是一个抽象类,因此我们不会直接创建CAAnimation类的对象,而是使用其子类对象。其有3个子类,分别为:
- CAPropertyAnimiation属性动画
- CAAnimationGroup动画组
- CATransition转场动画
其中,CAPropertyAnimiation属性动画又包含两个子类,分别为:
- CABasicAnimation基本动画
- CAKeyframeAnimation关键帧动画
在iOS9发布后,CABasicAnimation基本动画又添加了一个子类CASpringAnimation弹簧动画。
CAMediaTiming协议常用属性
CAAnimation类遵守了CAMediaTiming协议,在该协议中定义了一些常用的与动画播放相关的属性。常用的包括如下几个。
- beginTime:动画开始播放的时间,默认为0,即立即开始播放
@property CFTimeInterval beginTime;
- duration:动画持续的时间,默认为0
@property CFTimeInterval duration;
- speed:动画播放的速度,默认为1,数值越大播放的速度越快,例如,当取值为2时,以两倍速度播放动画
@property float speed;
- repeatCount:动画重复播放的次数
@property float repeatCount;
- repeatDuration:动画重复播放的时间间隔
@property CFTimeInterval repeatDuration;
- fillMode:定义动画播放完毕后的动作,一共有4个可选动作,默认为:kCAFillModeRemoved,即恢复原样
@property(copy) NSString *fillMode;
CA_EXTERN NSString * const kCAFillModeForwards;
CA_EXTERN NSString * const kCAFillModeBackwards;
CA_EXTERN NSString * const kCAFillModeBoth;
CA_EXTERN NSString * const kCAFillModeRemoved;
CAAnimation类的代理协议CAAnimationDelegate
CAAnimationDelegate是CAAnimation类的代理协议,其中定义了与动画播放相关的一些方法,主要包括:
- 动画开始播放时调用的方法
- (void)animationDidStart:(CAAnimation *)anim;
- 动画停止播放时调用的方法,停止播放的原因有可能是动画播放完成,也有可能是人为控制动画停止播放
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;
文章发布时间为: December 15th , 2016 at 11:39 am
最后编辑时间为: September 15th , 2017 at 03:53 am
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 15th , 2017 at 03:53 am
本文由 99ios 创作,转载请注明出处