前言
iOS中的动画主要是指 Core Animation 框架,该框架是跨 iOS 与 OS X 平台的主要负责图形渲染与动画的基础框架。苹果对 Core Animation 框架进行很好的封装,使我们开发者很简单的设置几个属性,就能实现绘制工作。
Core Animation 框架
在iOS中所有的动画看似是发生在 UIView上 的,但是其实都是发生在 UIView 的 CALayer 上。
UIView 与 CALayer 的区别主要就是:UIView 负责与用户交互,CALayer 负责图形的绘制。
CALayer 是默认修改属性支持隐式动画的,在给 UIView 的 Layer 做动画的时候,View 作为 Layer 的代理,Layer 通过 actionForLayer:forKey:向 View请求相应的 action(动画行为)
UIView的layer内部维护着三份 layer tree,分别是 presentLayer Tree(呈现动画树),modeLayer Tree(模型树), Render Tree (渲染树)。在做 iOS动画的时候,我们修改动画的属性,在动画的其实是 Layer 的 presentLayer 的属性值,而最终展示在界面上的其实是提供 View的modelLayer。
Core Animation框架的简介
Core Animation框架(以下简称CA框架)由CAAnimation(父类NSObject)以及其子类构成。

CA框架属性介绍
CABasicAnimation(基础动画)
- fromValue:动画的开始值(一般可以不设置)
- toValue:动画的结束值
- beginTime:动画的开始时间
- duration:动画的持续时间
- repeatCount:动画的重复执行次数
- fileMode:动画的运行场景
- isRemovedOnCompletion:完成后是否删除动画
- autoreverses:执行的动画是否按照原动画返回执行
CAKeyFrameAnimation(关键帧动画)
- path:关键帧动画的执行路径
- values:关键帧动画中的关键点数组
CAAnimationGroup(动画组)
- animations:动画组
CAAnimation
- delegate:动画代理(包含了动画开始执行以及结束完成两个代理方法)
- timingFunction:控制动画的显示节奏,系统提供五种值选择,分别是:
1.kCAMediaTimingFunctionDefault
( 默认,中间快)
2.kCAMediaTimingFunctionLinear
(线性动画)
3.kCAMediaTimingFunctionEaseIn
(先慢后快 慢进快出)
4.kCAMediaTimingFunctionEaseOut
(先块后慢快进慢出)
5.kCAMediaTimingFunctionEaseInEaseOut
(先慢后快再慢)
CATranstion(转场动画)
- type:过渡动画的动画类型,系统提供了多种过渡动画,分别是:
1:fade
(淡出 默认)
2:moveIn
(覆盖原图)
3:push
(推出)
4:fade
(淡出 默认)
5:reveal
(底部显示出来)
6:cube
(立方旋转)
7:suck
(吸走)
8:oglFlip
(水平翻转 沿y轴)
9:ripple
(滴水效果)
10:curl
(卷曲翻页 向上翻页)
11:unCurl
(卷曲翻页返回 向下翻页)
12:caOpen
(相机开启)
13:caClose
(相机关闭) - subtype : 过渡动画的动画方向, 系统提供了四种,分别是:
1.fromLeft
( 从左侧)
2.fromRight
(从右侧)
3.fromTop
(有上面)
4.fromBottom
(从下面)
CA框架项目实际应用
-
基础动画(CABasicAnimation)
基础动画主要提供了对于CALayer对象中的可变属性进行简单动画的操作。比如:位移、旋转、缩放、透明度、背景色等。
基础动画根据 keyPath 来区分不同的动画,, 系统提供了多个类型,如:
transform.scale (比例转换)、
transform.scale.x、transform.scale.y、
transform.rotation(旋转) 、
transform.rotation.x(绕x轴旋转)、transform.rotation.y(绕y轴旋转)、transform.rotation.z(绕z轴旋转)、
opacity (透明度)、
margin、
backgroundColor(背景色)、
cornerRadius(圆角)、
borderWidth(边框宽)、
bounds、
contents、
contentsRect、
cornerRadius、
frame、
hidden、
mask、
masksToBounds、
shadowColor(阴影色)、
shadowOffset、shadowOpacity、shadowOpacity,
在使用时候, 需要根据具体的需求选择合适的.
2019年5月14日更新至此!
网友评论