对UILayer & UIView的理解
2020-01-07 本文已影响0人
guoshengboy
1.首先UIView可以响应事件,Layer不可以.
UIview继承UIResponder 而Layer继承NSObject
2.View和CALayer的Frame映射及View如何创建CALayer.
一个 Layer 的 frame 是由它的 anchorPoint,position,bounds,和 transform 共同决定的,而一个 View 的 frame 只是简单的返回 Layer的 frame。
anchorPoint(锚点):一般默认锚点(0.5,0.5),如果改变锚点,那么这个视图frame就会改变
position:表示当前视图的锚点相对于父视图的Layer的位置坐标
3.UIView主要是对显示内容的管理而 CALayer 主要侧重显示内容的绘制。
在 View显示的时候,UIView 做为 Layer 的 CALayerDelegate,View 的显示内容由内部的 CALayer 的 display
4.layer tree
UIView的layer树形在系统内部,被维护着三份copy。分别是:
1.逻辑树,就是代码里可以操纵的,例如更改layer的属性等等就在这一份
2.动画树,这是一个中间层,系统正是在这一层上更改属性,进行各种渲染操作
3.显示树,这棵树的内容是当前正被显示在屏幕上的内容