Как и предлагали другие, вы можете использовать CATransaction
.
Проблема возникает, потому что CALayer имеет неявную длительность анимации по умолчанию, равную 0,25 секунды.
Таким образом, более простой (на мой взгляд) альтернативой setDisableActions
является использование setAnimationDuration
со значением 0.0
.
[CATransaction begin];
[CATransaction setAnimationDuration:0.0];
layer.position = CGPointMake(x, y);
[CATransaction commit];