如何更改CALayer的默认动画时间?

时间:2012-06-01 06:54:33

标签: iphone core-animation calayer

我使用这些代码来移动CALayer:

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

当我在没有任何动画调用的情况下更改图层的位置时,会有一个默认动画。当我在touchesMoved:withEvent:中使用这些代码时,这将导致图层移动滞后。

我想要做的是删除默认动画,并立即移动图层,以便它可以快速响应触摸事件,就像UIView的“中心”属性一样。

我该怎么办?特别的thx!

2 个答案:

答案 0 :(得分:9)

另一张海报有正确的想法,但没有提供足够的信息。

如果您想在没有动画的情况下立即更改图层属性,则需要将这些更改放在禁止操作的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];

答案 1 :(得分:1)

只需设置

即可
 [CATransaction setDisableActions:YES];

这将使图层移动而不会延迟