美文网首页
UIView和CALayer的区别和联系

UIView和CALayer的区别和联系

作者: 猿人 | 来源:发表于2019-12-03 13:55 被阅读0次

UIView和CALayer的区别和联系

1.UiView和CALayer是什么

CALayer 是动画中经常使用的一个类,它包含在QuartzCore框架中。CALayer类在概念上和UIView类似,
同样是一些被层级关系树管理的矩形块,也可以包含一些内容(像图片、文本或者背景色),管理子图层的位置。它们有 一些方法和属性用来做动画和变化。使用CoreAnimation开发动画的本质就是将CALayer中的内容转化为位图供硬件操作。

CALayer是一个比UIVIew更底层的图形类,是对底层图形API(OpenGL ES)一层层封装到最后得到的一个类,用于展示一些可见的图形元素,保留了一些基本的图形化操作,但同时由于相对高度的封装,使得操作使用变得很简单。CALayer 用于管理图形元素,甚至可以制作动画,它保留了一些几何属性,如位置、尺寸、图形变换等。一般的CALayer是作为UIView背后角色,在创建了一个UIView 的同时也存在一个相应的CALayer.UIView作为CAlayer的代理角色去实现一些功能,例如常见的为UIView制作一个圆角,就会用到UIView背后的layer操作:

view.layer.cornerRadius = 10;

CALayer 可以通过UIView很方便地展示操作UI元素,但是CALayer自身单独也可以展示和操作可见元素,且灵活度更高,它自身有一些可见可设置的属性,如背景色、边框、阴影等。

另外,UIView简单来说是一个可以在里面渲染可见内容的矩形框,它里边的内容可以和用户进行交互,UIVIew可以对交互进行处理。除了其背后CALayer图形操作支持,UIView自身也有像设置背景色最基本的属性设置。

2.UIView和CALayer的联系

UIView和CALayer的主要联系上面已经提到,CALayer在UIView背后提供更加丰富灵活的图形操作,UIView作为CALayer的代理更加快速地帮CALayer显示一些常用的UI元素并提供交互。

另外,UIView类是所有试图的基类,CALayer是图层类。事实上,UIView和CAlayer是平行的层级关系。每一个UIView都有一个CALayer实例的图层属性,视图的责任就是创建并管理图层,以确保当子视图在层级关系中被添加或者被移除的时候,与它们相关联的图层也同样在层级关系树中有相同的操作。

3.UIView和CALayer的区别

1.CALayer无法响应用户事件,UIVIew和CALayer的最明显区别在于它们的可交互性,即UIVIew可以响应用户时间,而CALayer不可以,原因可以从继承关系上看出 ,UIView继承自UIResponder的,决定了UIView及子类能够通过响应链 (iOS通过视图层级关系来传递触摸事件)接受并响应用户时间,而CALayer直接继承与NSObject类,所以它不清楚具体的响应链 也就无法响应用户事件。

2.所属框架不同。UIVIew类是属于UIKit.framework框架的,UIKit框架主要就是用来构建用户界面。CALayer类属于QuartzCore.framework框架。而且CALayer是作为一个低级的,可以承载绘制内容底层对象出现在该框架的。

3.分工不容 .UIView类侧重于对显示内容的管理和整体布局,而CALayer侧重于显示内容的绘制、显示和动画。

相关文章

网友评论

      本文标题:UIView和CALayer的区别和联系

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