美文网首页
UIView和CALayer的关系

UIView和CALayer的关系

作者: 深度码农患者 | 来源:发表于2020-02-20 20:10 被阅读0次
    1. UIView主要是对显示内容的管理,而CALayer主要是对显示内容的绘制。
      严格来说,UIView是CALayer的CALayerDelegate,在代理方法内部[CALayerDelegate drawLayer:inContext]中调用UIView的DrawRect方法,从而绘制出UIView的内容。
    2. UIView可以响应事件,Layer不可以。
      UIKit使用UIResponder作为响应对象,来响应系统传递过来的事件并进行处理,UIApplication、UIViewController、UIView和一切从UIView派生出来的UIKit类都直接或者间接继承自UIResponder。而UIResponder中定义了处理各种事件和事件传递的接口。
      而CALayer直接继承自NSObject,并没有响应的处理事件的接口。
    3. 在做iOS动画的时候,修改费RootLayer的属性(譬如位置、背景色等)会产生默认的隐式动画,而修改UIView不会。原因是UIView默认情况下禁止了Layer动画,但是在animation block中重新启用了它们。可以通过动画事务(CATransaction)去关系隐式动画
      任何可动画的CALayer属性改变时,layer都会寻找运行合适的action来实现这个改变,layer向它的delegate发送actionForLayer:ForKey:消息来询问提供一个对应属性变化的action。参考资料
    4. 每个UIVIew内部都有一个CALayer在背后提供内容的绘制和显示,并且UIView的样式和尺寸都由内部的Layer所提供。两者都有树状层级结构,layer内部有subLayers,View内部有SubViews,但是Layer比view多了个AnchorPoint
    5. UIView和CALayer的frame映射及View如何创建CALayer
      一个Layer的frame是由它的anchorPoint、position、bounds、transforms共同决定的,而view的frame只是简单的返回了layer的frame,同样的,View 的center和bounds也是返回Layer的一些属性。参考资料

    相关文章

      网友评论

          本文标题:UIView和CALayer的关系

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