2011-01-20 70 views
13

CAAnimation提供了removedOnCompletion属性,默认为YES。究竟是什么removedOnCompletion = NO呢?

让我们承认这些事实:

A)核心动画只影响表示树,而不是模型树。动画完成后,最终会看到模型树中设置的任何内容。例如,您可以将fillMode设置为kCAFillModeBoth,例如,将动画完成后,将演示树中的值切换到模型树。这会导致您的动画不能恢复(这很可能是您想要的)。 B)我做了一个实验。 removedOnCompletion = NO NOT与kCAFillModeBoth或kCAFillModeForwards具有相同的效果。更确切地说:对动画完成后的结果完全没有影响。无论它是否被“移除”,它似乎都不会影响演示树。

要解释什么removedOnCompletion真的做,文档在这方面太弱了。我不明白。任何人都可以解释什么会被删除,以及没有删除的好处是什么?

我的猜测是,苹果正在谈论动画制作者对象本身,它使用-addAnimation:forKey添加到图层中:...但是再次说明:保持它的意义何在?

回答

12

removedOnCompletion

基本上是当动画完成从层的行动删除动画。

YES - 如果你打算使用动画只有一次,你不需要使用委托方法从完成时删除层的动画。

fillMode

此属性控制视觉当动画完成,取决于填充模式指定的类型会发生什么。

12

如果removedOnCompletion为YES,则动画将在完成时删除,并且完全没有任何内容可以“填充”。因此,如果您想使用fillMode,则必须将removedOnCompletion设置为NO

+0

yes fillmode不显示任何影响,因为我们正在删除动画,所以对象返回到原始状态 – 2016-02-23 07:09:33

0

视图的表示层即使停止了动画也会生效。当删除动画时,表示层将恢复为视图模型层的值,所以你会得到一个结果为an0指向。