Имейте в виду, что когда вы устанавливаете позицию на слое (при условии, что это не корневой слой UIView, для которого действия по умолчанию отключены), он неявно анимирует на новую позицию, которая принимает 0,25 секунды. Если вы хотите сделать его более быстрым, временно отключите действия на слое, например:
- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event
{
CGPoint activePoint = [[touches anyObject] locationInView:self];
CGPoint newPoint = CGPointMake(activePoint.x -
currentPoint.x,activePoint.y - currentPoint.y);
[CATransaction begin];
[CATransaction setDisableActions:YES];
curLayer.position = CGPointMake(shapeLayer.position.x +
newPoint.x, shapeLayer.position.y + newPoint.y);
[CATransaction commit];
currentPoint = activePoint;
}
Это должно заставить его перейти на новую позицию, а не анимировать. Если это не поможет, тогда позвольте мне взглянуть на ваш код инициализации слоя, чтобы я мог видеть, какие свойства и измерения он имеет. Такие свойства, как cornerRadius, например, могут влиять на производительность.