fillMode详解

作者: 西南柯北 | 来源:发表于2018-06-10 16:46 被阅读7次

开发中给图层做动画时,为了让图层在动画完成之后保持在动画完后的那一刻的状态,通常将动画的isRemovedOnCompletion设置为true, 将fillMode设置为kCAFillModeForwards,即可达到效果。fillMode除了可设置kCAFillModeForwards外,还有kCAFillModeRemoved、kCAFillModeBackwards、kCAFillModeBoth三个值。在分析这三个值之前,先来看看fillMode的定义。
fillMode 定义了计时对象在其非活跃时段的行为。CAAnimation子类的实例就是计时对象。对于CAAnimation来说,非活跃时段就是动画开始前和动画完成后的时间段。
接下来说说fillMode的四个值的作用:
kCAFillModeRemoved:默认模式,动画开始前和结束后,动画对layer的状态没有影响。也就是说,动画开始前和结束后,layer都会处于添加动画前的状态。
kCAFillModeForwards:动画结束后,layer处于动画结束那一刻的状态。
kCAFillModeBackwards:动画开始前,layer处于动画开始那一刻的状态。
kCAFillModeBoth:动画开始前,layer处于动画开始那一刻的状态;动画结束后,layer处于动画结束那一刻的状态。
kCAFillModeRemoved对动画开始前和结束后两个时段都没有影响,在这两个时段,layer都将处于添加动画前的状态;kCAFillModeForwards影响的是动画结束后的状态,也就是说,动画完成后会状态会保持,不会突然回到原始状态。
kCAFillModeBackwards影响的是动画开始前的状态。默认情况下,动画添加到layer上,会立即开始动画,这时不能对比出kCAFillModeBackwards与kCAFillModeRemoved的差异,要测试kCAFillModeBackwards的效果,需要将动画的fromeValue设置为与layer添加动画前的值不同(例如要对layer沿x轴作平移动画,layer的position.x原来为50,可以将动画的fromeValue设置成100),并设置beginTime将动画延迟一定时间。
kCAFillModeForwards比较常用,影响的是动画结束后的状态。
kCAFillModeBoth可以看作是kCAFillModeBackwards和kCAFillModeForwards的结合。
需要注意,fillMode不论设置什么值,显示动画都不会改变layer的模型图层,影响的只是layer的呈现图层。

下面来看看示例代码以及效果:


示例代码.png

效果:

anim.fillMode = kCAFillModeRemoved
kCAFillModeRemoved.gif
anim.fillMode = kCAFillModeBackwards
kCAFillModeBackwards.gif
anim.fillMode = kCAFillModeForwards
kCAFillModeForwards.gif
anim.fillMode = kCAFillModeBoth
kCAFillModeBoth.gif

相关文章

  • fillMode详解

    开发中给图层做动画时,为了让图层在动画完成之后保持在动画完后的那一刻的状态,通常将动画的isRemovedOnCo...

  • FillMode详解

    最近在学核心动画的时候遇到了遇到了fillMode的属性,除了kCAFillModeForwards比较理解意外,...

  • 动画

    fillMode fillMode的作用就是决定当前对象过了非active时间段的行为. 比如动画开始之前,动画结...

  • iOS Animation 一些选项整理中

    UIView Animation Options Layer Anima -> fillMode

  • 保证隐性动画执行完成后不自动还原

    animation.fillMode = kCAFillModeForwards; animation.remov...

  • fillMode(CAMediaTiming)

    文档描述: /* Defines how the timed object behaves outside its...

  • 动画效果-02 CABasicAnimation的用法

    1.实现的效果: 没有设置fillMode=kCAFillModeForwards和removedOnComple...

  • CAAnimation

    CAAnimation 父类是NSObject CAAnimation常用属性 fillMode——动画填充模式 ...

  • Core Animation

    直接作用在CALayer上 动画执行过程在后台操作,不阻塞主线程 属性说明 动画填充模式 fillMode属性值(...

  • iOS 绘图中的 FillMode 填充模式

    简介 在绘图中, 我们经常需要对路径进行填充操作. 那么问题来了, 在一个路径的覆盖范围内, 如何判断哪些区域需要...

网友评论

    本文标题:fillMode详解

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