這很奇怪:如何重新激活應用的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認爲它已經在運行(有時並不是這種情況),而沒有在它實際上真的給它一個踢屁股的時候已經在運行了?
不幸的是,這並不能解決問題。動畫仍然停滯不前。 – openfrog