今天爱分享给大家带来 UIView与CLayer有什么区别【面试题详解】,希望能够帮助到大家。
1.UIView是OS系统中界面元素的基础,所有的界面元素都是继承自
它。它本身完全是由CoreA nimation来实现的。它真正的绘图部分,是由 一个CALayer类来管理。UIView本身更像是一个CALayer的管理器,访 问它的跟绘图和跟坐标有关的属性。
2.UIView有个重要属性layer ,可以返回它的主CALayer实例。
3.UIView的CALayer类似UIView的子View树形结构,也可以向它的 layer上添加子layer ,来完成某些特殊的表示。即CALayer层是可以嵌套 的。
4.UIView的layer树形在系统内部,被维护着三份copy。分别是逻辑
树,这里是代码可以操纵的;动画树,是一个中间层,系统就在这一层上 更改属性,进行各种渲染操作;显示树5,其内容就是当前正被显示在屏幕 上得内容。
5.动画的运作:对UIView的subLayer (非主Layer )属性进行更改,系 统将自动进行动画生成,动画持续时间的缺省值似乎是0.5秒。
6.坐标系统:CALayer的坐标系统比UIView多了一个anchorPoint属
性,使用C GPoi nt结构表示,值域是0�9�11,是个比例值。这个点是各种图 形变换的坐标原点,同时会更改layer的positio n的位置,它的缺省值是 {0.5,0.5},即在 layer 的中央。
7.渲染:当更新层,改变不能立即显示在屏幕上。当所有的层都准备好 时,可以调用setNeedsDisplay方法来重绘显示。
8.变换:要在一个层中添加一个3D或仿射变换,可以分别设置层的 tran sform 或 affi neTra nsform 属性。
9.变形:Quartz Core的渲染能力,使二维图像可以被自由操纵,就好像 是三维的。图像可以在一个三维坐标系中以任意角度被旋转,缩放和倾 斜。CATransform3D的一套方法提供了一些魔术般的变换效果。