认识CALayer和UIView

1.UIView继承UIResponde,可以响应事件。                                                    UIResponder中定义了处理各种事件和事件传递的接口,直接间接继承UIResponder类还有:UIApplication、UIViewController、UIView、和所有从UIView派生出来的UIKit类包括UIWindow。

CALayer直接继承NSObject,不可以响应事件。

2.CoreAnimation

CoreAnimation是对上层的封装,介于UIKit与CoreGraphics(绘图)、OpenGL/OpenGL  ES(渲染管线)之间。最底下还有一个Graphics Hardware,就是硬件。

3.Window与Layer之间的关系


此图告诉我们,层是基于绘画模型实现的,层不会在app中做什么,只是捕获app所提供的内容,并缓存成bitmap(位图文件),当任何与层关联的属性值发生时,CoreAnimation就会将新的bitmap传给绘图硬件,并根据新的位图更新显示。

UIView完全是由CoreAnimation来实现的,绘图部分由一个CALayer类来管理,例如:frame,bounds等,实际上内部都是在访问它所包含的CALayer的相关属性。

提示:layer-base drawing  不同于  view-base drawing ,后者的性能消耗是很高的,它是在主线程上直接通过CPU完成,而且通常在-drawRect:中绘制动画。

4.UIView和CALayer的联系

UIview默认包含一个layer属性,而layer是可以包含很多个sublayer的,UIView就像一个画板,而layer就像画布,一个画板上可以有很多块画布,画布不能有画板

UIView负责管理内容      CALayer负责渲染和呈现

CALayer维护着三个layer  tree :  presentLayer  Tree(呈现树)、modeLayer  Tree、render Tree(渲染树)。

在做动画时,修改动画的属性就是修改的是presentLayer属性值,展示在界面就是提供UIView的modelLayer。

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

推荐阅读更多精彩内容

  • 1.Difference between shallow copy and deep copy? 浅复制和深复制的...
    用心在飞阅读 1,031评论 0 9
  • UI viewcontroller的一些方法的说明viewDidLoad,viewWillDisappear, v...
    b485c88ab697阅读 3,600评论 0 22
  • 7、不使用IB是,下面这样做有什么问题? 6、请说说Layer和View的关系,以及你是如何使用它们的。 1.首先...
    AlanGe阅读 725评论 0 1
  • 在iOS开发中经常会涉及到触摸事件。本想自己总结一下,但是遇到了这篇文章,感觉总结的已经很到位,特此转载。作者:L...
    WQ_UESTC阅读 6,140评论 4 26
  • 从去年年底开始直到现在,我一直工作的很不开心,负能量爆棚,还动不动就抱怨,用高嘉程的话说就是感觉自己被下了祥林嫂同...
    是秋酱啊阅读 612评论 1 1