美文网首页
UIView与CALayer区别

UIView与CALayer区别

作者: Queen_BJ | 来源:发表于2020-09-03 17:26 被阅读0次
    • 创建UIView对象时,UIView内部会自动创建一个层(CALayer对象),通过UIView的layer属性可以访问这个层。当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图渲染,并且会将所有内容绘制在自己的层上,绘图完毕后,系统会将层拷贝到屏幕上,于是就完成了UIView的显示

    • UIView相比CALayer最大区别是UIView继承自UIResponder,可以响应用户事件,而CALayer不可以,CALayer继承于 NSObject;UIView侧重于对显示内容的管理,CALayer侧重于对内容的绘制。

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

    • UIView和CALayer是相互依赖的关系。UIView依赖CALayer提供的内容,CALayer依赖UIView提供的容器来显示绘制的内容。归根到底CALayer是这一切的基础,如果没有CALayer,UIView自身也不会存在,UIView是一个特殊的CALayer实现,添加了响应事件的能力。

    • 高级:UIView的layer树形在系统内部被系统维护着三份copy
      逻辑树:就是代码里可以操纵的,例如更改layer的属性(阴影,圆角等)就在这一份
      动画树:这是一个中间层,系统正是在这一层上更改属性,进行各种渲染操作
      显示树:这棵树的内容是当前正被显示在屏幕上的内容
      这三棵树的逻辑结构都是一样的,区别只有各自的属性

    • 常用:向UIView的layer上添加子layer,来使目标View上敷上一层黑色的透明薄膜。
      CALayer *grayCover = [[CALayer alloc]init];
      grayCover.backgroudColor = [[UIColor blackColor]colorWithAlphaComponent:0.3].CGColor;
      [self.layer addSubLayer: grayCover];

    应用

    CALayer 功能很强大除了基本用于边框角阴影等,在一些特效方面有很大作用比如展示控件3D效果、遮盖效果、渐变、粒子等

    相关文章

      网友评论

          本文标题:UIView与CALayer区别

          本文链接:https://www.haomeiwen.com/subject/pmznsktx.html