两者具有大多数相同的属性,都支持不同种类的动画,都代表不同的数据。UIView和CALayer之间有什么区别?
发布于 2011-10-20 04:08:43
在iOS上,每个UIView都由核心动画CALayer支持,因此在使用CALayers时,即使您可能没有意识到这一点,也要与UIView打交道。不像Mac上的NSViews,在核心动画出现之前就发展起来了,UIViews的目的是成为这些CALayers的轻量级包装器。
正如我在类似的问题"When to use CALayer on the Mac/iPhone?"中所描述的,直接使用CALayers并不会给您带来比UIViews显著的性能优势。您可能希望使用CALayers而不是UIViews构建用户界面元素的原因之一是,它可以非常容易地移植到Mac上。UIViews与NSViews非常不同,但CALayers在这两个平台上几乎相同。这就是Core Plot框架使用CALayers而不是其他UI元素来布局其图形的原因。
通过CALayers,UIViews提供的一件事是对用户交互的内置支持。它们处理触摸和其他相关操作的命中测试,如果管理CALayers的层次结构,您将需要构建这些操作。自己实现这一点并不难,但在构建仅CALayer接口时需要编写额外的代码。
在执行比UIView基类所允许的更复杂的动画时,您通常需要访问UIView的基础层。随着iOS软件开发工具包的成熟,UIView的动画功能也在增长,但仍有一些事情最好通过与底层的CALayer交互来完成。
发布于 2011-10-20 02:41:48
来自Ray Wenderlich博客(Tutorial)
CALayers只是在屏幕上表示一个带有可视内容的矩形的类。“等一下,”您可能会说,“这就是UIViews的用途!”这是真的,但是有一个诀窍:每个UIView都包含一个它绘制到的根层!
发布于 2013-12-12 15:33:55
简单地说,UIView继承自UIResponder,处理来自用户的事件,包含继承自NSObject的CALayer,主要关注渲染、动画等。
https://stackoverflow.com/questions/7826306
复制相似问题