The delay is that you change the bounds property of the layer, which is the animating property.
With CALayers (CA stands for basic animation ...), any change in the animation property will be animated by default. This is called implicit animation. By default, an animation takes 0.25 seconds, so if you update it often, say, when processing touches, it will add up and cause a visible lag.
To prevent this, you must declare an animation transaction, disable implicit animations, and then change the properties:
[CATransaction begin]; [CATransaction setDisableActions:YES]; layer.bounds = whatever; [CATransaction commit];
source share