2012-02-21 73 views
1

對於開發者文檔中的NSAnimation,我找到了-addProgressMark方法。對於CABasicAnimation我沒有發現任何類似的東西。如何獲取CABasicAnimation進度?

CABasicAnimation * rotateLayer = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"]; 

當動畫進度rotateLayer = 50%我想做某事 我該怎麼辦呢?

回答

2

你也許可以使用NSTimer來做到這一點。

由於代表方法CAAnimation(其中CABasicAnimation繼承自referenceanimationDidStart:,您可以知道動畫何時開始。由於您知道動畫持續的時間(您設置了動畫的持續時間),因此您可以在動畫達到其持續時間的50%時做任何您需要的操作。

我的2美分:)

+2

這種解決方案是一種破解...正確的方法應該是你的CALayer的子類,然後測量在drawInContext方法中播放的動畫。 – yunas 2013-09-05 20:59:52

0

我認爲更優雅的方法是有兩個動畫。您可以通過第一個完成處理程序按順序啓動它們,也可以在開始時通過CATransaction註冊它們(第二部分動畫延遲),然後再次使用第一個完成處理程序執行半途邏輯。

至少你的代碼是關注和本地化的。