CA类的关系

一.基本概念

什么是Animation(动画),简单点说就是在一段时间内,显示的内容发生了变化。
对CALayer来说动画就是在一段时间内,其 Animatable Property发生了变化.
CALayer(CA = Core Animation)类名来看就可以看出iOS的Layer就是为动画而生的,便于实现良好的交互体验.
动画涉及到两个东西: 一是Layer(基类CALayer),一是Animation(基于CAAnimation).
Animation作用于Layer,CALayer提供了接口用于给自己添加Animation.
用于显示的Layer本质上讲是一个Model,包含了Layer的各种属性值。
Animation则包含了动画的时间,变化,以及变化的速度。

二、CALayer

2.1、CALayer:图层

UIView的职责在于界面的显示和界面事件的处理,每一个View的背后都有一个layer(可以 通过view.layer进行访问),layer是用于界面显示的CALayer属于QuartzCore框架

2.2、Layer的渲染架构

Layer也和View一样存在着一个层级树状结构,称之为图层树(Layer Tree)。
直接创建的或者通过UIView获得的(view.layer)Layer是图层树,实际就是模型树,是我们可以通过改变他的属性来直接代码操作模型树,模型树的背后还存在两份图层树的拷贝,一个是呈现树(Presentation Tree),一个是渲染树(Render Tree). 呈现树可以通过普通layer的layer.presentationLayer获得,而模型树则可以通过layer.modelLayer属性获得(详情文档).模型树的属性在其被修改(修改layer的Animatable Property属性)的时候就变成了新的值,这个是可以用代码直接操控的部分;呈现树的属性值和动画运行过程中界面上看到的是一致的. 而渲染树是私有的,你无法访问到,渲染树是对呈现树的数据进行渲染,为了不阻塞主线程,渲染的过程是在单独的进程或线程中进行的,所以你会发现 Animation的动画并不会阻塞主线程.

三、相关动画类的关系

CA类的关系.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Core Animation其实是一个令人误解的命名。你可能认为它只是用来做动画的,但实际上它是从一个叫做Laye...
    小猫仔阅读 3,803评论 1 4
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,147评论 5 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,573评论 6 30
  • 前言 本文只要描述了iOS中的Core Animation(核心动画:隐式动画、显示动画)、贝塞尔曲线、UIVie...
    GitHubPorter阅读 3,662评论 7 11
  • 回到家第一时间妹妹去寻找美食 与妹妹一起去买花 和妈妈买了一个风车兜兜转转运 大年初一,就只有这么一天能和爸爸一起...
    劉青争阅读 345评论 0 0