2011-01-20 102 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指向。