2012-06-01 62 views
2

我使用這些代碼來移動的CALayer:當我改變的層的位置,而無需任何動畫call.This將導致上的層的運動滯後當我使用這些代碼如何更改CALayer的默認動畫時間?

CGPoint position = self.position; 
position.x += 10; 
position.y += 10; 
self.position = position; 

有一個默認的動畫在touchesMoved:withEvent :.

我想要做的是刪除默認動畫,並立即移動圖層,以便它可以快速響應觸摸事件,就像UIView的「中心」屬性一樣。

我該怎麼辦?特別thx!

+0

在[禁用隱式動畫的可能重複 - \ [CALayer的setNeedsDisplayInRect: \]](http://stackoverflow.com/questions/2244147/disabling-implicit-animations-in-calayer-setneedsdisplayinrect) –

回答

8

的層中移動的其他海報有正確的想法,但並沒有提供足夠的信息。

如果你想立即改變圖層屬性,沒有動畫,你需要把CATransaction內這些變化,你禁止的行爲:

[CATransaction begin]; 
[CATransaction setAnimationDuration: 1.0/30.0]; 
[CATransaction setDisableActions: TRUE]; 
//Put layer changes you want to take place without animation here. 
[CATransaction commit]; 
+0

不錯!效果很好。 – zumzum

1

只需設置

[CATransaction setDisableActions:YES]; 

這將使沒有滯後