UIView与CALayer的关系

UIView与CALayer

我们都知道每个UIView都包含一个CALayer,并且很多的操作都是直接对layer的操作,比如设置圆角、阴影、边框等等。
从本质上来说,UIView是在CALayer上的封装,是一个比较简单的封装。并在CALayer的基础之上添加了手势识别等特性。

这里我们会产生两个问题:

1、为什么说UIView是CALayer的一个简单的封装?

首先CALayer是QuartzCore库内的类,QuartzCore/CALayer的类定义里面有很多属性(变量)及方法在<UIKit/UIView>中可以找到几乎一模一样的对应;比如frame、hiden等。但也有很多方法是UIView所没有的,所以UIView只是把CALayer常用的接口(属性和方法)暴露出来了,让View更容易使用。这就是为什么说UIView是在CALayer一个比较简单的封装。

2、为什么不直接使用CALayer而要封装一个UIView?

iOS平台的Cocoa Touch是源于OS X平台的Cocoa,是在Cocoa的基础之上添加了适用于移动手机设备的手势识别、动画等特性。但从底层上来说Cocoa Touch和Cocoa共用一套底层的库。其中就包括了QuartCore.framework;但QuartCore.framework一开始就是为OS X设计的,所以其中有部分特性是不适合做移动设备开发的,比如最重要的坐标系统。因此,我们也就不难理解为何UIView/NSView在CALayer上做了一层封装。

以上就是UIView与CALayer的主要关系。

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

推荐阅读更多精彩内容

  • CALayer CALayer类在概念上和UIView类似,同样也是一些被层级关系树管理的矩形块,同样也可以包含一...
    巫师学徒阅读 526评论 0 0
  • 关系UIView表示屏幕上的一块矩形区域,IOS中几乎所有可视化控件都是UIView的子类。负责渲染区域的内容,并...
    王蓝胖阅读 735评论 0 1
  • UIView 是什么,做什么UIView是用来显示内容的,可以处理用户事件 2.CALayer是什么,做什么CAL...
    anny_4243阅读 202评论 0 0
  • UIView本身是由CoreAnimation来实现的。它真正的绘图部分,是由一个CALayer类来管理。 UIV...
    dacheng阅读 523评论 0 0
  • 春要出嫁了 敦厚善良的山峦是她的新郎 婚期将至 风把喜讯传遍天山南北 遍地的野花都成了伴娘 蓝天作为媒人穿上新装 ...
    小西瓜嘚麻麻阅读 924评论 0 1