面试回顾之七:UIView和CALayer的区别和联系

1, uiview 是uikit的(只能iOS使用)  calayer 是QuartzCore的(ios 和mac os通用)

2, calayer 比uiview更加轻量级别, 但是可以实现同样的效果

3, uiview比calayer多了一个事件处理的功能,也就是说,CALayer 不能处理用户的触摸事件,而UIView可以

4, UIView的CALayer类似UIView的子View树形结构

5, UIView有个重要属性layer,可以返回它的主CALayer实例。CALayer *layer = myView.layer

6, 坐标系统:CALayer的坐标系统比UIView多了一个anchorPoint属性

7, UIView是iOS系统中界面元素的基础,所有的界面元素都是继承自它。它本身完全是由CoreAnimation来实现的。它真正的绘图部分,是由一个CALayer类来管理。UIView本身更像是一个CALayer的管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,bounds等,实际上内部都是在访问它所包含的CALayer的相关属性。

最后:layer可以设置圆角显示(cornerRadius),也可以设置阴影 (shadowColor)。但是如果layer树中某个layer设置了圆角,树种所有layer的阴影效果都将不显示了。因此若是要有圆角又要阴影,变通方法只能做两个重叠的UIView,一个的layer显示圆角,一个layer显示阴影

8, 渲染 当更新层,改变不能立即显示在屏幕上。当所有的层都准备好时,可以调用setNeedsDisplay方法来重绘显示。

9, 变换 要在一个层中添加一个3D或仿射变换,可以分别设置层的transform或affineTransform属性。

10, 变形 Quartz Core的渲染能力,使二维图像可以被自由操纵,就好像是三维的。图像可以在一个三维坐标系中以任意角度被旋转,缩放和倾斜。CATransform3D的一套方法提供了一些魔术般的变换效果。

你可能感兴趣的:(面试回顾之七:UIView和CALayer的区别和联系)