UIView layer
The view’s Core Animation layer used for rendering. (read-only)
This property is never nil. The actual class of the object is determined by the value returned by the layerClass method. The view is the layer’s delegate.
Warning: Since the view is the layer’s delegate, you should never make the view the delegate of another CALayer object. Additionally, you should never change the delegate of this layer object.
The CALayer class is the model class for layer-tree objects. It encapsulates the position, size, and transform of a layer, which defines its coordinate system. It also encapsulates the duration and pacing of a layer and its animations by adopting the CAMediaTiming protocol, which defines a layer’s time space
1.UIView是iOS系统中界面元素的基础,所有的界面元素都继承自它。它本身完全是由CoreAnimation来实现的(Mac下似乎不是这样)。它真正的绘图部分,是由一个叫CALayer(Core Animation Layer)的类来管理。UIView本身,更像是一个CALayer的管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,bounds等等,实际上内部都是在访问它所包含的CALayer的相关属性。
2.UIView有个layer属性,可以返回它的主CALayer实例,UIView有一个layerClass方法,返回主layer所使用的类,UIView的子类,可以通过重载这个方法,来让UIView使用不同的CALayer来显示,例如通过
- (class) layerClass {
return ([CAEAGLLayer class]);
}
使某个UIView的子类使用GL来进行绘制。
3.UIView的CALayer类似UIView的子View树形结构,也可以向它的layer上添加子layer,来完成某些特殊的表示。例如下面的代码
grayCover = [[CALayer alloc] init];
grayCover.backgroundColor = [[[UIColor blackColor] colorWithAlphaComponent:0.2] CGColor];
[self.layer addSubLayer: grayCover];
会在目标View上敷上一层黑色的透明薄膜。
4.UIView的layer树形在系统内部,被系统维护着三份copy(这段理解有点吃不准)。
第一份,逻辑树,就是代码里可以操纵的,例如更改layer的属性等等就在这一份。
第二份,动画树,这是一个中间层,系统正在这一层上更改属性,进行各种渲染操作。
第三份,显示树,这棵树的内容是当前正被显示在屏幕上的内容。
这三棵树的逻辑结构都是一样的,区别只有各自的属性。
5.动画的运作
UIView的主layer以外(我觉得是这样),对它的subLayer,也就是子layer的属性进行更改,系统将自动进行动画生成,动画持续时间有个缺省时间,个人感觉大概是0.5秒。在动画时间里,系统自动判定哪些属性更改了,自动对更改的属性进行动画插值,生成中间帧然后连续显示产生动画效果。
6.坐标系系统(对position和anchorPoint的关系还是犯晕)
CALayer的坐标系系统和UIView有点不一样,它多了一个叫anchorPoint的属性,它使用CGPoint结构,但是值域是0~1,也就是按照比例来设置。这个点是各种图形变换的坐标原点,同时会更改layer的position的位置,它的缺省值是{0.5, 0.5},也就是在layer的中央。
某layer.anchorPoint = CGPointMake(0.f, 0.f);
如果这么设置,layer的左上角就会被挪到原来的中间的位置,
加上这样一句就好了
某layer.position = CGPointMake(0.f, 0.f);
7.真实例子的分析
这是iphone上iBook翻页的效果,假设每一页都是一个UIView,我觉得一个页面是贴了俩个Layer,文字Layer显示正面的内容,背面layer用文字layer的快照做affine翻转,贴在文字layer的后面。因为Layer可以设置显示阴影,也许后面的阴影效果没有使用单独的一个layer来显示。至于这个曲面效果,我查了很多资料也没有结果,估计是使用了GL的曲面绘图?
8.最后一个让人恶心的。
layer可以设置圆角显示,例如UIButton的效果,也可以设置阴影显示,但是如果layer树中的某个layer设置了圆角,树中所有layer的阴影效果都将显示不了了。如果既想有圆角又想要阴影,好像只能做两个重叠的UIView,一个的layer显示圆角,一个的layer显示阴影.....
转自: http://www.cnblogs.com/uyoug321/archive/2011/01/22/1941827.html
- 大小: 274.2 KB
分享到:
相关推荐
《Core Animation for Mac OS X and the iPhone》是一本专为Mac开发者撰写的指南,重点介绍了Core Animation框架的应用方法。本书不仅适合初学者快速上手,也适合有经验的开发者深入学习。 #### 重要知识点解析 1....
本书详细介绍了Core Animation的核心概念和技术,包括以下内容: 1. **Core Animation基础**:阐述了Core Animation的基本架构,它是如何在Quartz 2D和OpenGL ES之间协调工作,以实现硬件加速的2D和3D图形渲染。...
Core Animation是iOS开发中一个强大的框架,用于创建各种丰富的视觉效果和动画。它不仅限于基本的移动和变换,还能实现复杂的2D和3D图形渲染。本教程将引导初学者掌握Core Animation的核心概念和使用技巧,从而在iOS...
**核心动画编程指南**是苹果公司为iOS和Mac OS X开发者提供的一份重要参考资料,它深入解析了Core Animation框架的使用方法和核心技术。Core Animation是苹果操作系统中的一个关键图形渲染技术,它允许开发者创建高...
Core Animation是苹果公司为其操作系统macOS和iOS提供的一项强大的图形渲染和动画技术。它是一个低级别的框架,用于创建丰富的、高性能的2D和3D视觉效果。Core Animation在应用程序的用户界面(UI)中扮演着核心角色...
核心动画(Core Animation)是Apple开发的一个强大的图形和动画框架,主要应用于iOS和macOS操作系统。这个"core animation advanced techniques源码"包含了深入利用Core Animation实现复杂和高性能动画的实例和示例...
iOS Core Animation是苹果公司为iOS设备提供的一个强大的动画框架,它是UIKit框架的一部分,可以用来创建流畅且丰富的视觉效果。本文将从iOS Core Animation的基础知识讲起,逐步深入探讨其中的核心概念、高级技术和...
Core Animation是iOS开发中用于创建丰富视觉效果的关键技术,它为开发者提供了强大的工具来实现平滑、高性能的2D和3D图形动画。这个“Core Animation动画例子”压缩包很可能是包含了一些示例代码,帮助开发者理解...
《iOS-CoreAnimation》是苹果平台下用于构建动态、交互式用户界面的核心技术之一。它是一个高性能的图形渲染和动画引擎,旨在快速、高效地组合和更新屏幕上的视觉元素,为iOS应用提供流畅、绚丽的动画效果。Core ...
通过上述介绍可以看出,Core Animation 是一个强大而灵活的工具,可以帮助开发者轻松地为应用添加各种动态效果。无论是基本动画还是复杂的关键帧动画,都可以通过 Core Animation 实现。同时,结合 Objective-C 的...
在iOS开发中,Core Animation是苹果提供的一种强大的图形渲染技术,用于创建丰富的视觉效果和流畅的动画。这个“ios-CoreAnimation核心动画学习.zip”压缩包很可能是为了帮助开发者深入理解并掌握Core Animation的...
Core Animation是苹果操作系统中最核心的动画框架之一,主要用于在iOS和macOS平台上创建流畅、高性能的2D图形和动画效果。这个"CoreAnimation-demo.zip"压缩包文件显然包含了一些示例代码,旨在演示如何使用Core ...