2009-07-22 742 views
23

文檔並沒有真正談論這在技術上的作用。fillMode究竟做了什麼?

fadeInAnimation.fillMode = kCAFillModeForwards; 

我並沒有真正看到這個效果。我有一個alpha設置爲0.0的視圖。然後我將它淡入。但是當我取消註釋關於h的行時,沒有任何變化。同樣的行爲。我想了解這個fillMode的功能。

回答

43

CAMediaTiming protocol documentation

確定接收的 呈現被凍結或刪除一次 其活動期間完成。

這就決定了在動畫的最後會發生什麼。默認情況下,它被設置爲kCAFillModeRemoved,這意味着動畫完成時動畫更改將被撤消。如果將其切換到kCAFillModeForwards,由動畫引起的更改將停滯不前。

請注意,還可能需要向removedOnCompletion屬性設置爲NO,以防止你的動畫被刪除,這將使該設置無效。

+0

很好的解釋分組的動畫中的小孩動畫連接!是的,我將removedOnCompletion設置爲NO。這就是爲什麼我在fillMode中看不到變化,對吧?爲什麼叫做「fillMode」?所以內部它只不過是在所有動畫插值例程之後保留新的計算參數? – Thanks 2009-07-22 18:55:50

2

讓我給它一個更明確的答案:
雖然在外觀動畫的fillMode屬性設置爲kCAFillModeForwards(或kCAFillModeBoth),並在同一時間設置removedOnCompletionNO可以保持你的層在其最後的狀態,當動畫完成但這種使用fillMode不是設計方式。實際上造成傷害,如果你有其他的動畫添加到同樣的keyPath

(順便說一下,對於保持動畫的最終狀態,正確的做法是改變屬性值來匹配動畫的最後一幀。)

什麼fillMode真正使用是這樣你就可以在所期望的狀態指定特定的子動畫