【发布时间】:2010-09-03 04:57:03
【问题描述】:
什么是 CALayer(如 UIView 上的 layer 属性所示),我们将在哪里使用这样的类?
【问题讨论】:
标签: iphone objective-c cocoa macos core-animation
什么是 CALayer(如 UIView 上的 layer 属性所示),我们将在哪里使用这样的类?
【问题讨论】:
标签: iphone objective-c cocoa macos core-animation
UIView 是一个聚合类。它包含事件响应者链的“东西”、处理视图层次结构的东西等,以及关于在显示器上绘制什么的东西。 UIView 的 CALayer 只是关于绘制什么的东西:图像位、缩放、变换、动画属性等。
Cocoa Touch UI 是通过合成层来绘制的……视图在窗口顶部的视图之上。 CALayer 是合成堆栈中的一个层,它位于某些层之上,并可能位于其他层之下。 (例如,拆分视图中的视图中的表格单元格中的按钮中的图像等)
如果您想对视图绘制或显示的内容做一些特殊的事情,而这些内容在现有的 UIView 类方法中没有提供,那么可以通过直接访问 CALayer 来做一些特殊的事情:也许在视图之间交换层和/或图像、在屏幕外绘制东西、自定义动画等。
Apple CALayer Class Reference 文档中有更多解释
【讨论】:
UIView 建立在 CALayers 之上。这只是一个类,它是 UIViews 的可视内容。只需使用 NSLog 打印 UIView 并检查,我们可以看到它的内容层和框架。
使用 Core Graphics 直接使用 CALayers 而不是 UIView 是 UIKit 元素。
self.view.layer.backgroundColor = [UIColor redColor].CGColor;
【讨论】: