Один из способов сделать это - изменить точку привязки нижележащего слоя UIImageView и вращаться вокруг нее. Вы можете изменить точку вращения, используя что-то вроде следующего:
imageView.layer.anchorPoint = CGPointMake(0.25, 0.25);
anchorPoint определяется в терминах относительных координат в слое. То есть (0,0) - это верхний левый угол слоя (на iPhone, где слои UIView перевернули координаты Y), а (1,1) - правый нижний.
Перемещение anchorPoint может привести к смещению вашего изображения, поэтому вам, возможно, придется впоследствии отрегулировать его положение.
Чтобы повернуть слой изображения вокруг этой новой точки привязки, вы можете изменить структуру CATransform3D для слоя, используя что-то вроде следующего:
CATransform3D rotatedTransform = imageView.layer.transform;
rotatedTransform = CATransform3DRotate(rotatedTransform, 60.0 * M_PI / 180.0, 0.0f, 0.0f, 1.0f);
imageView.layer.transform = rotatedTransform;
Этот пример делает инкрементный поворот 60 градусов относительно опорной точки.
Все изменения слоя по умолчанию анимированы. Вы можете отключить эту анимацию, заключив свои изменения в эти свойства в транзакцию CAT следующим образом:
[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
// Code for changes here
[CATransaction commit];