究竟removeOnCompletion = NO究竟做了什么?
CAAnimation提供removedOnCompletion属性,默认为YES。
让我们认识到这些事实:
A)核心动画仅影响表示树,但不影响模型树。 完成动画后,您最终会看到模型树中设置的内容。 例如,您可以将fillMode设置为kCAFillModeBoth,一旦动画完成,它将把表示树中的值交换到模型树。 这会导致您的动画无法恢复(这很可能是您想要的)。
B)我做了一个实验。 removedOnCompletion = NO与kCAFillModeBoth或kCAFillModeForwards的效果不同。 更确切地说:完成动画时结果的效果绝对没有影响。 它被“删除”与否,似乎根本不会影响表示树。
为了解释removeOnCompletion真正做了什么,文档在这方面太弱了。 我不明白。 任何人都可以解释究竟会被删除的内容,以及没有删除它的好处是什么?
我的猜测是Apple正在谈论动画师对象本身,它使用-addAnimation添加到图层:forKey:…但是又一次:保持它的重点是什么?
removedOnCompletion
:
基本上,当动画完成时,动画是从图层的动作中移除的。
YES
– 如果您只想使用动画一次,则不需要使用委托方法在完成时从图层中删除动画。
fillMode
:
此属性控制动画完成时视觉上发生的情况,具体取决于指定的填充模式类型。
如果removedOnCompletion
为YES,则动画将在完成时删除,并且根本没有任何“填充”。 因此,如果要使用fillMode
,则必须将removedOnCompletion
设置为NO
。
即使它停止,视图的表示层也会受到动画的影响。 删除动画时,表示层将恢复为视图模型层的值,因此您将得到一个指向的结果。