图层树

2018-08-22  本文已影响0人  风轻语落

       Core Animation是从CALayer Kit这个名词演变而来,动画只是其功能特性的一部分。其职责就是尽可能快的组合屏幕上的可视内容,这个内容是被分解成独立的图层存储在一个叫做图层树的体系之中。这个树形成了屏幕上可见的一切的基础。

图层与视图

       所有的视图都是从UIView派生的,可以处理触摸事件,可以基于Core Graphics绘图,可以做仿射变换。

       CALayer和UIView类似,同样被层级关系树管理,同样可以包含内容,管理子图层位置,可以做动画和变换。他们最大的不同是CALayer不必处理用户交互,虽然CALayer提供了方法判断触摸点是否在图层范围内。

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

      CALayer和UIView职责分离,可以避免很多重复代码,以便macOS和iOS复用。iOS和macOS上的事件交互有很多不同的地方,基于多点触控和鼠标点击有着本质的区别。

     除了视图层级和layer层级之外,还有呈现树和渲染树。

图层具备而视图不具备的能力:

1. 阴影、圆角、带颜色的边框

2. 3D变换

3. 非矩形范围

4. 透明遮罩

5. 多级非线形动画

上一篇 下一篇

猜你喜欢

热点阅读