UIView和CALayer的区别和联系

面试的时候遇到一个问题,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的一套方法提供了一些魔术般的变换效果。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值