iOS UIView和CALayer

作者: Mccc_ | 来源:发表于2019-12-27 11:26 被阅读0次

CALayer

// 截选了部分继承的父类
open class CALayer : NSObject
  • CALayer称之为图层,管理基于图像的内容并允许对该内容执行动画的对象。
  • CALayer直接继承自NSObject,负责显示内容的绘制,没有事件响应的功能。
  • CALayer中可判断某点是否在图层范围内,但是没有响应链的存在。

UIView

// 截选了部分继承的父类
open class UIView : UIResponder, CALayerDelegate 
  • 管理屏幕上一个矩形区域的内容的对象;
  • UIView 继承于UIResponder,主要职责负责接收并处理事件。
  • UIView负责显示屏幕上的一块矩形区域内容的管理;
  • UIView是CALayer的delegate;

UIView和CALayer的联系

  • UIView有一个类型为CALayer名为layer的对象属性,它是一个对 CALayer 的底层封装。也是基于此,UIView和CALayer有很多相似行为,这些相似行为都依赖CALayer来实现。
  • UIView是实现了CALayerDelegate,提供了处理事件交互的具体功能,还有动画底层方法的高级API。可以说CALayer是UIView的内部实现细节,UIView可以显示在屏幕中,依赖于它内部的CALayer图层。
  • UIView的尺寸样式都由于内部的CALayer所提供。两者者都有树状层级结构,layer 内部有 SubLayers,View 内部有 SubViews。

UIView和CALayer的区别

  • UIView可以响应事件,CALayer不可以响应事件;
  • 一个 Layer 的 frame 是由它的 anchorPoint,position,bounds,和 transform 共同决定的,而一个 View 的 frame 只是简单的返回 Layer的 frame。
  • layer独有功能: 阴影,圆角,带颜色的边框的设置;3D变换;非矩形范围;透明遮罩;多级非线性动画;
  • UIView主要是对显示内容的管理, CALayer 主要侧重显示内容的绘制;UIView本身没有显示的能力,是它内部的CALyer图层才有了显示功能。
  • Layer 比 View 多了个AnchorPoint

关于CALayer更细致的使用

iOS CALayer图层漫谈(一)
iOS CALayer图层漫谈(二)
iOS CALayer图层漫谈(三)
iOS CALayer图层漫谈(四)
CALayer官方说明
UIView官方说明

相关文章

网友评论

    本文标题:iOS UIView和CALayer

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