- 异同
- UIView负责用来处理和用户的交互
- CALayer负责真正的在屏幕上显示和做动画
- 关联(平行的层级关系)
- 一个视图只有一个相关联的图层,初始化视图的时候自动创建,暂且叫为根图层,视图的职责就是创建并且管理这个图层
- 但是我们也可以自己创建单独的图层,来添加为某个视图相关联的跟图层的字图层,如图所示
- Mac OS平台10.8之前,一个显著的性能缺陷就是用了视图层级而不是单独在一个视图里面使用
CALyer
树状层级;10.8之后NSView
性能得到了大幅度提高 - IOS平台,作为比较轻量级的
UIView
并没有显著的性能影响 - 视图层级优点:可以在使用所有的
CALayer
底层特性同时,也可以同时使用UIView
的高级API(自动排版,布局和事件处理) CALayer
优点:开发同时可以在Mac OS上运行的跨平台应用,使用多种CALayer
的子集
- 原因(职责分离)
- 为什么不用一个简单的层级来处理所有的事情,而是需要基于
UIView
和CALayer
提供俩个平行的层级关系 - iOS和Mac OS俩个平台上,事件和用户交互方面:基于多点触控的用户界面和基于鼠标键盘有着本质的区别 ,这既是为什么iOS有UIKit和UIView,Mac OS有AppKit和NSView,这样俩个平台就能共享Core Animation框架,共享代码,使得开发更加便捷
- 为什么不用一个简单的层级来处理所有的事情,而是需要基于