CAAnimation提供removedOnCompletion属性,默认为YES。
让我们认识到这些事实:
A)核心动画仅影响表示树,但不影响模型树。完成动画后,您最终会看到模型树中设置的内容。例如,您可以将fillMode设置为kCAFillModeBoth,一旦动画完成,它将把表示树中的值交换到模型树。这会导致您的动画无法恢复(这很可能是您想要的)。
B)我做了一个实验。 removedOnCompletion = NO NOT 与kCAFillModeBoth或kCAFillModeForwards具有相同的效果。更确切地说:完成动画时结果的效果绝对没有影响。无论它是否被“移除”,它似乎都不会影响演示树。
为了解释removeOnCompletion真正做了什么,文档在这方面太弱了。我不明白。任何人都可以解释究竟会删除什么,以及没有删除它的好处是什么?
我的猜测是Apple正在谈论动画师对象本身,它使用-addAnimation添加到图层:forKey:...但是又一次:保持它的重点是什么?
答案 0 :(得分:13)
如果removedOnCompletion
为YES,则动画将在完成时删除,并且根本没有任何“填充”。因此,如果您想使用fillMode
,则必须将removedOnCompletion
设置为NO
。
答案 1 :(得分:12)
removedOnCompletion
:
基本上,当动画完成时,动画是从图层的动作中移除的。
YES
- 如果您打算只使用一次动画,则完成后无需使用委托方法从图层中删除动画。
fillMode
:
此属性控制动画完成时视觉上发生的情况,具体取决于指定的填充模式类型。
答案 2 :(得分:0)
视图的表示层即使停止也会受到动画的影响。删除动画时,表示层将恢复为视图模型层的值,因此您将得到一个指向的结果。
答案 3 :(得分:0)
removedOnCompletion = YES
确实只是一个捷径。在大多数情况下,我不鼓励使用它,而是设置模型值。
虽然您没有使用它们,但仍然流连忘返的动画可能会消耗能量和带宽,并弄乱您的逻辑,因为您无法再检查animationKeys
来轮询(是否需要)它们是否已经完成了。