How do you move a CALayer instantly (without animation)

Mel picture Mel · Oct 22, 2008 · Viewed 20.8k times · Source

I'm trying to drag a CALayer in an iOS app.

As soon as I change its position property it tries to animate to the new position and flickers all over the place:

 layer.position = CGPointMake(x, y)

How can I move CALayers instantly? I can't seem to get my head around the Core Animation API.

Answer

Ben Gottlieb picture Ben Gottlieb · Oct 22, 2008

You want to wrap your call in the following:

[CATransaction begin]; 
[CATransaction setValue: (id) kCFBooleanTrue forKey: kCATransactionDisableActions];
layer.position = CGPointMake(x, y);
[CATransaction commit];