2012-03-05 51 views
0

我創建了一個UIView和一些圖層。我已經將這些圖層組織到超視圖 - 子視圖層次結構中,其中包含UIView圖層中的根,添加了一些手勢識別器,並且我試圖從手勢識別器(設置邊界和位置確定)處理層的幾何圖形。我使用隱式動畫和CATransactions。沒有使用明確的動畫。CoreAnimation抖動

如果我創建持續時間爲0的CATransaction,實際結果已經足夠了。但是,如果將持續時間設置爲0.2,我會得到一些奇怪的結果:由於事件發生得不是很快,並且以前的事務有時間需要在下次啓動之前完成一切都正常(例如點擊),但如果沒有足夠的時間(例如在捏或平底鍋上),被調整大小的圖層開始打亂。在視覺上,它看起來像動畫回滾到初始點,並重新開始新的值。

我看不出有任何理由。我試圖在-[UIView layoutSubviews]中執行佈局,並在手勢識別器處理程序中調用setNeedsDisplay。我也試圖將這個邏輯分解成單獨的方法,但它沒有幫助。

我再說一遍,我只使用隱式動畫。而我想知道的是爲什麼會發生(但不是如何解決)。

任何線索?

+0

我覺得這個問題的措辭非常糟糕.. – 2012-03-07 23:51:40

回答

1

我想,這是因爲當你之前未完成時你開始新的動畫。 也許,你需要停止它像

[yourView.layer removeAnimationForKey:@"yourAnimationKey"]; 

,你需要實現動畫的委託方法

-(void)stopAnimation:(id)sender 
{ 
    yourView.frame = [[yourView.layer presentationLayer] frame]; // that set frame of your view to it's animation position 
} 
+0

這沒有奏效。並且動畫不應該被刪除:它應該繼續從_presentation layer_中的當前值的動畫新值。它在我的綜合測試中也是如此。 – 2012-03-06 08:46:29