美文网首页
UIView与CALayer的关系

UIView与CALayer的关系

作者: whbsspu | 来源:发表于2017-08-17 14:49 被阅读30次

    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的主要关系。

    相关文章

      网友评论

          本文标题:UIView与CALayer的关系

          本文链接:https://www.haomeiwen.com/subject/sqtnrxtx.html