2011-09-18 16 views
0

這很奇怪:如何重新激活應用的CABasicAnimation或檢查CABasicAnimation是否實際正在運行?

我有一個包含旋轉CALayer的視圖。在transform.rotation.z關鍵路徑上使用CABasicAnimation旋轉圖層。工作正常。

然後包含該層的視圖變爲釋放狀態,並且一段時間後我再次加載所有內容。我重新創建視圖和旋轉圖層,並應用該CABasicAnimation。在某些情況下,動畫不會啓動。

所以我接下來做的是這樣的:執行延遲選擇器來踢動畫,如果它被阻止。但由於踢它,而它正在運行導致屏幕上明顯的順利,我檢查動畫對象是否存在:

CABasicAnimation *anim = [rotatedLayer animationForKey:@"transform.rotation.z"]; 
if (!anim) { 
    [self startRotating]; 
} 

不幸的是,當動畫沒有發生,我確實有應用了CABasicAnimation對象。從邏輯上講,因爲我創造了它。動畫不會啓動。但是,當我在一秒鐘左右之後再次應用它時,它就會起作用。

我甚至從委託獲得animiationDidStart消息:

- (void)animationDidStart:(CAAnimation *)theAnimation { 
    NSLog(@"animation started!!!!"); 
} 

有一個很好的機會,這是不是一個錯誤,但功能。

有沒有辦法給CABasicAnimation對象一個踢它的方法,即使CoreAnimation認爲它已經在運行(有時並不是這種情況),而沒有在它實際上真的給它一個踢屁股的時候已經在運行了?

回答