美文网首页iOS底层探究
iOS中显式和隐式动画的区别

iOS中显式和隐式动画的区别

作者: lanmoyingsheng | 来源:发表于2018-07-12 18:25 被阅读354次

    收集到的显式和隐式动画的区别:

    1、隐式动画一直存在 如需关闭需设置;显式动画是不存在,如需显式 要开启(创建)。

    2、显式动画是指用户自己通过beginAnimations:context:和commitAnimations创建的动画。
    隐式动画是指通过UIView的animateWithDuration:animations:方法创建的动画。

    3、隐式动画是系统框架自动完成的。Core Animation在每个runloop周期中自动开始一次新的事务,即使你不显式的用[CATransaction begin]开始一次事务,任何在一次runloop循环中属性的改变都会被集中起来,然后做一次0.25秒的动画。在iOS4中,苹果对UIView添加了一种基于block的动画方法:+animateWithDuration:animations:。这样写对做一堆的属性动画在语法上会更加简单,但实质上它们都是在做同样的事情。CATransaction的+begin和+commit方法在+animateWithDuration:animations:内部自动调用,这样block中所有属性的改变都会被事务所包含。

    4、显式动画,Core Animation提供的显式动画类型,既可以直接对退曾属性做动画,也可以覆盖默认的图层行为。我们经常使用的CABasicAnimation,CAKeyframeAnimation,CATransitionAnimation,CAAnimationGroup等都是显式动画类型,这些CAAnimation类型可以直接提交到CALayer上。
    无论是隐式动画还是显式动画,提交到layer后,经过一系列处理,最后都经过上文描述的绘制过程最终被渲染出来。

    参考
    iOS中显式动画和隐式动画的细微区别
    iOS 事件处理机制与图像渲染过程

    相关文章

      网友评论

        本文标题:iOS中显式和隐式动画的区别

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