對於開發者文檔中的NSAnimation
,我找到了-addProgressMark
方法。對於CABasicAnimation
我沒有發現任何類似的東西。如何獲取CABasicAnimation進度?
CABasicAnimation * rotateLayer = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];
當動畫進度rotateLayer
= 50%我想做某事 我該怎麼辦呢?
對於開發者文檔中的NSAnimation
,我找到了-addProgressMark
方法。對於CABasicAnimation
我沒有發現任何類似的東西。如何獲取CABasicAnimation進度?
CABasicAnimation * rotateLayer = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];
當動畫進度rotateLayer
= 50%我想做某事 我該怎麼辦呢?
你也許可以使用NSTimer
來做到這一點。
由於代表方法CAAnimation
(其中CABasicAnimation
繼承自reference)animationDidStart:
,您可以知道動畫何時開始。由於您知道動畫持續的時間(您設置了動畫的持續時間),因此您可以在動畫達到其持續時間的50%時做任何您需要的操作。
我的2美分:)
我認爲更優雅的方法是有兩個動畫。您可以通過第一個完成處理程序按順序啓動它們,也可以在開始時通過CATransaction註冊它們(第二部分動畫延遲),然後再次使用第一個完成處理程序執行半途邏輯。
至少你的代碼是關注和本地化的。
這種解決方案是一種破解...正確的方法應該是你的CALayer的子類,然後測量在drawInContext方法中播放的動畫。 – yunas 2013-09-05 20:59:52