AI智能
改变未来

iOS面试 – UIView & UILayer 的区别与联系

UIView:

  • UIView 是 iOS 系统中界面元素的基础,所有的界面元素都继承自它;

  • 它本身完全是由 CoreAnimation 来实现的;

  • 它真正的绘图部分,是由一个叫 CALayer(CoreAnimation Layer)的类来管理;

  • UIView 本身更像是一个 CALayer 的管理器,访问它的根绘图和根坐标有关的属性,例如 frame,bounds 等等, 实际上内部都是在访问它所包含的 CALayer 的相关属性;

  • UIView 有个重要属性 layer,可以返回它的主 CALayer 实例。

CALayer:

  • CALayer 类似 UIView 的子 View 树形结构,也可以向它的 layer 上添加子 layer,来完成某些特殊的表示(即 CALayer 层是可以嵌套的);

  • UIView 的 layer 树形在系统内部分别是:
    1.逻辑树,这里是代码可以操纵的;
    2.动画树,是一个中间层,系统就在这一层上更改属性,进行各种渲染操作;
    3.显示树,其内容就是当前正被显示在屏幕上得内容。

  • 动画的运作:对 UIView 的 subLayer(非主 Layer)属性进行更改,系统将自动进行动画生成,动画持续时间的缺省值似乎是 0.5 秒。

  • 坐标系统:CALayer 的坐标系统比 UIView 多了一个 anchorPoint 属性,使用 CGPoint 结构表示,值域是 0~1,是个比例值。

  • 渲染:当更新层,改变不能立即显示在屏幕上。当所有的层都准备好时,可以调用 setNeedsDisplay 方法来重绘显示。

  • 变换:要在一个层中添加一个 3D 或仿射变换,可以分别设置层的 transform 或 affineTransform 属性。

  • 变形:Quartz Core 的渲染能力,使二维图像可以被自由操纵,就好像是三维的。图像可以在一个三维坐标系中以任意角度被旋转,缩放和倾斜。CATransform3D 的一套方法提供了一些魔术般的变换效果。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » iOS面试 – UIView & UILayer 的区别与联系