iOS学习笔记:Cocoa中视图和Layer的区别与联系

1. Cocoa中视图和Layer都是树形结构。视图可以处理事件,例如鼠标点击和手势触控,视图在层级中可以相互嵌套,一个视图可以管理它的所有子视图。Layer也可以树形嵌套,父Layer也可以管理子Layer的位置等属性,但Layer不处理用户的交互,所以Layer并不清楚具体的响应链(虽然Layer提供了一些方法判断一个触控点是否在图层内,但这属于图层几何学范畴)。

2. 每个视图都有一个CALayer实例的涂层属性,视图的职责就是创建和管理这个图层,以确保当子视图在层级关系中添加或者被移除的时候,他们关联的图层也同样对应在层级关系树当中有相同的操作。

3.为什么要基于UIView(NSView)提供两个平行的层级关系呢,为什么不用一个简单的层级来处理所有事情呢?
原因在于要做职责分离,这样能避免很多的重复代码,虽然Mac上的鼠标点击和手机的触控很相似,但是有本质的区别,这也是为什么区别了NSView和UIView,CALayer却公用一个的原因。

4.虽然图层不能处理交互事件,视图也不能处理一些高级的显示效果,比如
阴影,圆角,带颜色的边框
3D变换
非矩形范围
透明遮罩
多级非线性动画 等

5.四个层级树,图层树,视图树。呈现树和渲染树暂未学习,后续了解。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注