iOS动画JG专题

《iOS 核心动画: 高级技术 》笔记 1.1 层树

2015-08-21  本文已影响169人  圣斗士皮皮

动画库?太小看它了

Core Animation(核心动画)并不仅仅是动画,它其实最早的框架名字叫 Layer Kit(层开发包)。

Core Animation 的工作内容是所有屏幕上可见的内容,这些可视化的内容的组织的形式就是一棵 layer tree(层树)。

view 和 layer 一样吗

layer 是处理所有屏幕显示相关的工作的, 而 view 在这点上,只是 layer的一个wrapper,内部还是layer在帮你干。除此之外,view 还包括了一些响应链来处理事件,如触摸等,而 layer 对此毫无兴趣。

这样的设计,可以使得库开发者只需要在ios和mac上在view上做修改即可,如此, ios上是 uiview 体系,而mac上是 nsview 体系,而layer层却都是 core animation 的。另一方面,使用者在处理 ios 和 mac 跨平台的时候,layer 层可以几乎不用修改就可以在两个平台上获得相同的效果。所以在需要款平台(ios和mac)的时候,多多使用 layer 而非 view 来处理显示的内容吧。

iOS 上一个view创建后,通常会内部连带创建一个默认的 layer。而 mac 上一个你需要自己创建 layer。

虽然 view 作为一个 layer 的 wrapper,但是一些功能还是必须直接操作 layer, 如下面这些功能在 view 上并没有提供接口:

 - 阴影,圆角,边框颜色

 - 3D的变换

 - 非矩形的边框

 - 透明遮罩

 - 多级非线性动画

layer 在代码中就是一个 CALayer.

layer 和 view 一样,可以内部添加孩子。它们在设计上是一个并行的继承树,当你一个 view 被添加或移除的时候,其对应的 layer 会在layer的树中也会相应的添加或移除。

其实内部拥有四个并行的继承树,除了 view 树, layer树, 另外两个是 表示树 和 显示树。

使用 layer

添加 QuartzCore 框架,并引用头文件 <QuartzCore/QuartzCore.h>

上一篇下一篇

猜你喜欢

热点阅读