CALayer
// 截选了部分继承的父类
open class CALayer : NSObject
- CALayer称之为图层,管理基于图像的内容并允许对该内容执行动画的对象。
- CALayer直接继承自NSObject,负责显示内容的绘制,没有事件响应的功能。
- CALayer中可判断某点是否在图层范围内,但是没有响应链的存在。
UIView
// 截选了部分继承的父类
open class UIView : UIResponder, CALayerDelegate
- 管理屏幕上一个矩形区域的内容的对象;
- UIView 继承于UIResponder,主要职责负责接收并处理事件。
- UIView负责显示屏幕上的一块矩形区域内容的管理;
- UIView是CALayer的delegate;
UIView和CALayer的联系
- UIView有一个类型为
CALayer
名为layer
的对象属性,它是一个对 CALayer 的底层封装。也是基于此,UIView和CALayer有很多相似行为,这些相似行为都依赖CALayer来实现。 - UIView是实现了
CALayerDelegate
,提供了处理事件交互的具体功能,还有动画底层方法的高级API。可以说CALayer是UIView的内部实现细节,UIView可以显示在屏幕中,依赖于它内部的CALayer图层。 - UIView的尺寸样式都由于内部的CALayer所提供。两者者都有树状层级结构,layer 内部有 SubLayers,View 内部有 SubViews。
UIView和CALayer的区别
- UIView可以响应事件,CALayer不可以响应事件;
- 一个 Layer 的 frame 是由它的 anchorPoint,position,bounds,和 transform 共同决定的,而一个 View 的 frame 只是简单的返回 Layer的 frame。
- layer独有功能: 阴影,圆角,带颜色的边框的设置;3D变换;非矩形范围;透明遮罩;多级非线性动画;
- UIView主要是对显示内容的管理, CALayer 主要侧重显示内容的绘制;UIView本身没有显示的能力,是它内部的CALyer图层才有了显示功能。
- Layer 比 View 多了个AnchorPoint
关于CALayer更细致的使用
iOS CALayer图层漫谈(一)
iOS CALayer图层漫谈(二)
iOS CALayer图层漫谈(三)
iOS CALayer图层漫谈(四)
CALayer官方说明
UIView官方说明
网友评论