Core Animation

一、概述

Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍。也就是说,使用少量的代码就可以实现非常强大的功能。它可以用在Mac OS X和iOS平台。Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程。要注意的是,Core Animation是直接作用在CALayer上的,并非UIView

 

二、Core Animation的继承结构

CAAnimation是所有动画对象的父类,负责控制动画的持续时间和速度、是个抽象类,不能直接使用,应该使用具体子类。需要注意的是CAAnimation 和 CAPropertyAnimation 都是抽象类。

view是负责响应事件的,layer是负责显示的。

2248583-2dfdb6de25cde9d1

黄色的区块是常用的属性、方法或者需要遵守的协议,灰色的是名称。

图注:

  • 核心动画中所有类都遵守CAMediaTiming。
  • CAAnaimation是个抽象类,不具备动画效果,必须用它的子类(CAAnimationGroup和CATransition)才有动画效果。
  • CAAnimationGroup(动画组),可以同时进行缩放,旋转。
  • CATransition(转场动画),界面之间跳转都可以用转场动画。
  • CAPropertyAnimation也是个抽象类,本身不具备动画效果,只有子类(CABasicAnimation和CAKeyframeAnimation)才有动画效果。
  • CABasicAnimation(基础动画),做一些简单效果。
  • CAKeyframeAnimation(帧动画),做一些连续的流畅的动画。

 

三、Core Animation使用步骤及相关属性

1、使用步骤

第一步:初始化一个CAAnimation对象,并设置一些动画相关属性。

第二步:通过调用CALayer的addAnimation:forKey:方法增加CAAnimation对象到CALayer中,这样就能开始执行动画了。

第三步:通过调用CALayer的removeAnimationForKey:方法可以停止CALayer中的动画。

 

2、常用属性

就是上面图片中的小黄色区内容。

动画代理能够检测动画的执行和结束:

 

3、animationWithKeyPath中,常用的keyPath

Snip20170211_6_2

 

4、动画填充模式

 

5、动画速度控制函数

 

6、CALayer上动画的暂停和恢复

 

四、动画的调用方式

(1)UIView 代码块调用:

 

(2)UIView [begin commit]模式

 

(3)使用Core Animation中的类

addanimation:forkey: 这个key到底是什么?官方的注释是:

翻译下:

也就是说,key可以设置为任意值。

 

五、基本使用示例

1、基础动画(CABaseAnimation)

重要属性:

基础动画主要提供了对于CALayer对象中的可变属性进行简单动画的操作。比如:位移、透明度、缩放、旋转、背景色等等。

例如:

运行结果:

2017-02-11 22.08.34

其他一些动画效果:

 

2、CAKeyframeAnimation 关键帧动画

Keyframe顾名思义就是关键点的frame,你可以通过设定CALayer的始点、中间关键点、终点的frame,时间,动画会沿你设定的轨迹进行移动 。

CAKeyframeAnimation 的一些比较重要的属性:

例如,连续移动一个view到不同的位置:

运行效果就不贴出来了,大家可以自己尝试下。

对比基础动画跟关键帧动画,关键帧动画引入了动画占比时长的概念,这让我们能控制每个关键帧动画的占用比例而不是传入一个无意义的动画时长 —— 这让我们的代码更加难以理解。当然,除了动画占比之外,关键帧动画的options参数也让动画变得更加平滑,下面是关键帧特有的配置参数:

 

3、CAAnimationGroup 组合动画

Group也就是组合的意思,可以保存一组动画对象,将CAAnimationGroup对象加入图层后,组中所有动画对象可以同时并发运行。

其重要属性为:

注意:默认情况下,一组动画对象是同时运行的,我们也可以通过设置动画对象的beginTime属性来更改动画的开始时间。

如下:

运行效果:

2017-02-11 22.32.29

4、CATransition 过渡动画

CAAnimation的子类,用于做过渡动画或者转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。

重要属性:

有以下几种type:
Snip20170211_8

有以下几种subtype:

例如,为了便于使用,我们可以自定义一个相关方法:

 

除了上面layer的动画之外,还有UIView的动画:

Snip20170211_9

例如:

运行效果:

2017-02-11 22.57.43

以上就是Core Animation的主要用法。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值