Bra*_*son 220
在iOS上,每个UIView都有一个Core Animation CALayer支持,所以你在使用UIView时正在处理CALayers,即使你可能没有意识到.与核心动画存在之前发展的Mac上的NSView不同,UIViews旨在成为围绕这些CALayers的轻量级包装器.
正如我在类似问题中描述的那样"何时在Mac/iPhone上使用CALayer?" 直接与CALayers合作并不比UIViews具有显着的性能优势.您可能希望使用CALayers而不是UIViews构建用户界面元素的原因之一是它可以非常容易地移植到Mac.UIViews与NSViews有很大不同,但CALayers在两个平台上几乎完全相同.这就是Core Plot框架使用CALayers而不是其他UI元素来绘制图形的原因.
UIViews通过CALayers提供的一件事是对用户交互的内置支持.如果管理CALayers的层次结构,他们会处理您自己需要构建的触摸和其他相关操作的命中测试.自己实现这一点并不困难,但在构建仅限CALayer的界面时,需要编写额外的代码.
在执行比基本UIView类允许的更复杂的动画时,您经常需要访问UIView的底层.随着iOS SDK的成熟,UIView的动画功能不断增强,但仍然有一些事情最好通过与底层CALayer交互来完成.
UIView是一个容器CALayers.用UIKit.
CALayer我们在哪里画内容.运用CoreGraphics
如果您使用自定义控件之类的功能,那么继续使用包含更多图层的单个视图以获得准确的本机渲染将会非常棒.因为CALayers失重比UIView.
要为Mac和iOS创建通用骨架,请使用适合您应用的设计CALayers.既然它可以在两个平台上使用.
UIView具有使用代表实现的触摸事件等功能-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event,tochesStart如事件和其他UIKit功能.
一起工作CALayers使用核芯显卡knowledge.For任何简单的视图呈现UIView就足够了.