美文网首页
CALayer & UIView

CALayer & UIView

作者: ienos | 来源:发表于2020-05-01 09:41 被阅读0次

一、Response

UIView 可以响应事件,Layer 不可以

  1. UIKit 使用 UIResponder 作为响应对象,定义了处理各种事件和事件传递的接口。UIApplication/UIViewController/UIView/其他 UIView 派生出来的 UIKit 类
  2. CALayer 直接继承 NSObject,没有相应的处理事件的接口

二、Struct

一个 Layer 的 frame 是由它的 anchorPoint、position、bounds、transform 共同决定的,而一个 view 的 frame 只是简单地返回 Layer 的 frame,同样 view 的 center 和 bounds 也是返回 Layer 的一些属性

CALayer 的常用属性

  • anchorPoint 和中心点 position 重合的一个点,称为 “锚点”。锚点的描述是相对于 x/y 位置比例而言的默认在(0.5, 0.5)的位置,也就是中心点

    layer 的默认 anchorPoint (0.5, 0.5)居中,此时 layer 的 position 为 anchorPoint 的位置;
    anchorPoint 表示的是锚点处于 layer 的位置

微信截图_20200501091343.png
  • content 图层显示内容,例如可以将图片作为图层内容使用
  • frame 图层的大小和位置,不支持隐式动画,所以在 CALayer 中很少使用 frame,通常使用 bounds 和 position 代替
  • opacity 透明度,类似于 UIView 的 alpha
  • shadow 三个属性: shadowColor、shadowOffset、shadowOpacity

三、Function

  • UIView 主要是对显示内容的管理,CALayer 侧重于对显示内容的绘制
  • 每个 UIView 内部都有一个 CALayer 在背后提供内容的绘制和显示,并且 UIView 的尺寸样式都由内部 Layer 提供。两者都由树状层级结构,layer 内部有 sublayers,view 内部有 subviews,但是 Layer 比 View 多了一个 anchorPoint

四、Animation

  • CALayer 是默认修改属性支持隐式动画的,修改非 RootLayer 的属性(位置、背景颜色等等)会默认产生隐式动画,而修改 UIView 不会
  • 在给 View 的 Layer 做动画的时候,View 作为 Layer 的代理,Layer 通过 actionForLayer:forKey: 向 View请求相应的 action(动画行为)

layer 内部维护着三分 layer tree,分别是 presentLayer Tree(动画树),modeLayer Tree(模型树),Render Tree (渲染树),在做 iOS动画的时候,我们修改动画的属性,在动画的其实是 Layer 的 presentLayer 的属性值,而最终展示在界面上的其实是提供 View 的 modelLayer

相关文章

  • 问题汇总

    1、UIView和CALayer区别UIView和CALayer的区别.UIView相对于CAlayer来说就多了...

  • CALayer与UIView的区别

    CALayer与UIView的区别 基础 CALayer的定义 CALayer的基础 CALayer和UIView...

  • UIView和CALayer

    1. UIView和CALayer CALayer负责显示内容contents UIView为CALayer提供现...

  • UIView和CALayer

    UIView和CALayer和有什么关系 UIview中有个属性layer,是CALayer类型。 CALayer...

  • UIView和CALayer

    UIView和CALayer 1: 从框架来说 CALayer 基于 QuartzCore 框架 UIView 基...

  • CALayer- bounds、position、anchorP

    CALayer 每个UIView都有一个根CALayer,UIView本身没有显示的功能,是靠CALayer进行绘...

  • iOS简书修道第一天

    一、CALayer和UIView的认识 1、CALayer是UIView的渲染层,他比UIView更轻量,UIVi...

  • iOS UIView视图事件传递和相应

    UIView 和 CALayer 有什么区别 UIView包含CALayer 的layerUIView 对 CAL...

  • 动画

    动画 Animation 1.CALayer简介 1.1 CALayer与UIView之间的关系 UIView 能...

  • UIView和CALayer的区别和联系

    UIView和CALayer的区别和联系 1.UiView和CALayer是什么 CALayer 是动画中经常使用...

网友评论

      本文标题:CALayer & UIView

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