美文网首页
1、UIView与CALayer的区别

1、UIView与CALayer的区别

作者: Shineyok | 来源:发表于2020-07-14 16:56 被阅读0次

    简单来说 两者区别为:

    UIView为CALayer提供内容、以及负责处理触摸等事件,参与响应链。

    CALayer负责显示内容。

    具体来说:

    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的一些属性。

    相关文章

      网友评论

          本文标题:1、UIView与CALayer的区别

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