The Layer Tree
来源:互联网 发布:什么是数据的树形结构 编辑:程序博客网 时间:2024/04/28 17:37
妖怪也有层次。洋葱有层次。你明白吗?我们都有层次。——史莱克
Core Animation 这个命名是有误的,你可能会认为它的主要目的是动画,但这个库实际上动画只是一个方面而已,最初就因为少量动画为中心而被命名为LayerKit。
Core Animation 是一个图像合成的引擎,它的工作就是将不同的图像内容输出在屏幕上,并且尽可能快得完成。这个问题的核心在于将内容分开到单独的layers然后分层储存起来如何一颗layer tree(层树?)。这棵树形成了UIKit的基础,和你的APP所能在屏幕上看到的一切。
在我们讨论动画之前,我们先简述Core Animation 的静态和成和布局特点,就从这颗layer tree开始。
层和视图
如果你曾经建立一个iOS或者MacOS的app,你会对视图(view)的概念很熟悉。视图就是显示内容(如图像、文字或视频)的矩形对象,并接收用户的输入如鼠标点击或者点击手势。视图可以各自嵌套,形成一种层次结构。其中每个视图管理其孩子(子视图)的位置。图1.1展现了典型的分层结构视图关系。
——————————————————————2014.3.16,1:11————————————
事实上,不是两个,而是四个这样的层次,分别执行不同的角色。除了视图层次结构和层树,还有演示树和渲染树,
我们将在第7章分别讨论“隐式动画,”和第12章“性能调优速度“。
Layer Capabilities
所以,如果CALayer的是UIView的内部运作的只是一个实现细节,为什么我们需要了解它呢?当然,苹果提供的不错的,简单的UIView界面。正是如此,我们并不需要直接与核心动画本身的粗糙的细节处理?
这在一定程度上是真实的。为了简单起见,我们并不真正需要直接与应对CALayer,因为苹果已经很容易地利用强大的功能,如动画就间接通过使用简单的高级别API UIView的接口。
但由于牺牲了简洁性灵活性。如果你想要做的事稍微普通的,或使用功能的,苹果并没有选择在UIView类提供接口,你别无选择,只能冒险下到CoreAnimation探索较基础级别的选项。
我们既定了Layer不能处理像UIView的可触摸事件,所以什么Layer可以做但UIView不可以的?下面是CALayer的一些功能不包含
UIView的:
▪阴影,圆角和彩色边框
▪3D转换和定位
▪非矩形边界
▪内容阿尔法掩蔽
▪多步,非线性动画
——————————————————————2014.3.19,1:40————————————
我们在下面的章节探索这些功能,现在让我们来看看如何CALayer的可以在一个应用程序被使用。
Working with Layers
让我们开始创建一个简单的项目,该项目将使我们能够操纵的Layer属性。在Xcode中,创建一个使用单一视图应用程序模板创建一个新的iOS项目。
在屏幕的中间创建一个小的视图(约200×200像素)。你可以以编程方式或使用Interface Builder这样做(你喜欢就行)。只要确保你在你的视图控制器包含一个属性,使您可以直接访问小视图。我们叫它layerView。
如果您运行该项目,你应该看到一个白色方形在浅灰色的背景中间(见图1.3)。如果你没有看到这一点,你可能需要调整的背景窗口/视图的颜色。
图1.3白色的UIView在灰色背景中
这不是很令人兴奋的,所以让我们增添了少许色彩。我们将放置一个蓝色小方块在白色小方块的里面。
我们可以通过简单地使用其他的UIView添加它作为一个子视图到我们已经创建了的UIView(无论是在代码或接口生成器)来实现这样的效果,但不会真的教给我们有关图层什么。
相反,让我们创建一个CALayer的,并把它作为一个子层,以我们的观点的支持层。虽然该层物业在UIView类接口公开,标准对于iOS应用程序的Xcode项目模板不包括核心动画标题,所以我们不能调用任何方法或访问层的任何属性,直到我们加入适当的
框架到项目中。要做到这一点,首先添加QuartzCore框架中的应用
目标的构建阶段选项卡(见图1.4),然后导入
<QuartzCore/QuartzCore.h>在视图控制器的m文件。
——————————————————————2014.3.20,1:17————————————
- The Layer Tree
- How to pause the animation of a layer tree
- iOS核心动画进阶选译(1)The layer tree
- The Mythical Business Layer
- 4-The Network Layer
- !!!Chapter 2 The Physical Layer
- !!!Chapter 5 The Network Layer
- !!!Chapter 6 The Transport Layer
- !!!Chapter 7 The Application Layer
- understand the pcb‘s layer
- The Tree |
- The Tree ||
- The seven layer of the osi model
- Visual Layer Overview(2)--Visual Tree
- Chromium网页Layer Tree创建过程分析
- Chromium网页Layer Tree绘制过程分析
- Chromium网页Layer Tree同步为Pending Layer Tree的过程分析
- Chromium网页Pending Layer Tree激活为Active Layer Tree的过程分析
- eclipse开发android程序 自动提示内容为空
- leetcode: Next Permutation
- 颜色空间转换
- DataGridView捕获上下左右按键
- 内存模型之白话入门
- The Layer Tree
- STM32 入门之 GPIO
- AlloyDesigner----来直星星的web前端开发方式
- Python 3.3 入门教程
- 内存模型之白话解决方案
- Java学习记录之集合框架工具类
- Fedora19添加和设置YUM源
- apache-tomcat-6.0.37中设置URIEncoding=utf-8
- Algorithm学习笔记 --- 求自然数1~9各个数的立方值(递归)