美文网首页IOS开发
iOS UIView动画以及CA动画

iOS UIView动画以及CA动画

作者: Sharif_su | 来源:发表于2020-06-23 18:26 被阅读0次

    UlView是iOS中所有的界面元素都继承自它,它本身完全是由CoreAnimation来实现的。每一 ^^ UlView内部都默认关联着一个layer,真正的绘图部分,是由一个叫CALayer (Core Animation Layer)的类来管理;

    UlView有个layer属性,可以返回它的主CALayer实例,UlView有一个layerClass方法,返回主 layer所使用的类,UlView的子类,可以通过重载这个方法,来让UlView使用不同的CALayer来显 示; UlView的layer树形在系统内部,被维护着三份copy (presentLayer Tree、modeLayer Tree、 render Tree),修改动画的属性,其实是Layer的presentLayer的属性值;

    动画的运作:对UlView的subLayer (非主Layer)属性进行更改,系统将自动进行动画生成。

    区别

    1. UlView继承自UIResponder,能接收并响应事件,负责显示内容的管理;而CALayer继承自 NSObject,不能响应事件,负责显示内容的绘制;
    2. UlView侧重于展示内容,而CALayer则侧重于图形和界面的绘制;
      3.当View展示的时候,View是layer的CALayerDelegate,View展示的内容是由CALayer进行display 的;
    3. view内容展示依赖CALayer对内容的绘制,UlView的frame也是由内部的CALayer进行绘制;
      5.对UlView的属性修改,不会引起动画效果,但是对于CALayer的属性修改,是支持默认动画效果 的,在view执行动画的时候,view是layer的代理,layer通过actionForLayer: forkey向对应的 代理view请求动画action;
      6.每个UlView内部都有一个CALayer在背后提供内容的绘制和显示,并且UlView的尺寸样式 都由内部的Layer所提供,layer比view多了个anchorPoint;
    4. —个CALayer的frame是由其anchorPoint, position, bounds, transform共同决定的,而一 个UlView的的frame只是简单地返回CALayer的frame,同样UlView的center和bounds也只是简单 返回CALayer的Posit ion和Bounds对应属性。

    相关文章

      网友评论

        本文标题:iOS UIView动画以及CA动画

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