2009-09-10 126 views
0

如何在iPhone上停止自定義繪製CALayer的旋轉?順利停止核心動畫旋轉

CATransform3D pausetransform = ((CALayer *)[layer presentationLayer]).transform; 
[layer removeAllAnimations]; 
layer.transform = pausetransform; 

停止動畫,然後立即旋轉層後面一點點。可能是因爲在設置了暫停轉換值之後,動畫會持續一段時間。

在動畫的- (void) animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finishednormally委託方法中設置layer.transform值會在動畫旋轉到正確位置之前,簡要顯示動畫開始位置的圖層。

回答

1

事實證明,當調用[layer removeAllAnimations]花了這麼長時間來顯示它正在推遲實際停止動畫時,我設置了UIActionSheet。通過將UIActionSheet的設置移至- (void) animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finishednormally委託方法,現在旋轉平穩停止。

0

另一種方法是調用

[view.layer removeAnimationForKey:@"name of your animation"]; 

然而,它既可以除去,這取決於你如何設置動畫,在動畫停止在動畫的下一個迭代。假設,假設您以10度的增量旋轉,則動畫將在下一個10度增量之前停止。

+0

我正在使用CABasicAnimation將圖層360°旋轉一次。當我刪除動畫(使用removeAllAnimations或removeAnimationForKey)時,圖層將返回到layer.transform中的旋轉。但是我無法找到在動畫停止的時刻獲取圖層旋轉的方法。我也不能在動畫停止的時刻設置圖層的旋轉。我只能在之前或之後執行此操作,這兩者都會導致圖形故障。 CAAnimation的另一個子類能夠更好地處理這個問題嗎? – kareman 2009-09-11 17:44:44