Поверните прямоугольник вокруг его верхнего левого угла

Просто попытайтесь повернуть прямоугольник вокруг его начала или его верхнего левого угла, например:

введите здесь описание изображения

Использую следующее:

panGestureRecognizer.view.transform = CGAffineTransformRotate(panGestureRecognizer.view.transform, (M_PI * angle) / 180);

Но прямоугольник как бы вращается по большой петле. Есть ли какой-то перевод, который мне нужно сделать, чтобы заставить это работать?


person Ser Pounce    schedule 05.03.2013    source источник


Ответы (1)


Вам просто нужно установить точку привязки: https://developer.apple.com/library/mac/#documentation/graphicsimaging/reference/CALayer_class/Introduction/Introduction.html#//apple_ref/occ/instp/CALayer/anchorPoint

panGestureRecognizer.view.layer.anchorPoint = CGPointMake(0.0, 0.0);

Дополнительная литература: Для более сложных вещей вы можете попробовать некоторые советы, подробно описанные здесь для матричных преобразований: https://stackoverflow.com/a/8536553/563381

person Ryan Poolos    schedule 06.03.2013
comment
Спасибо. Я пробовал это, но это не сработало. Возможно, мне нужно установить что-то еще? - person Ser Pounce; 06.03.2013
comment
Это должно быть все, что вам нужно. И вы делаете изображение, похожее на ваш ожидаемый результат, которое показывает фактический результат? Может помочь мне лучше понять, что происходит не так. - person Ryan Poolos; 06.03.2013
comment
На самом деле правильный ответ: CGPointMake(0,0), это view.layer.anchorPoint (вы не указали слой выше). Если вы исправите их, ответ будет отмечен как правильный. - person Ser Pounce; 06.03.2013
comment
Упс, извините за опечатку. Рад, что ты понял это. - person Ryan Poolos; 06.03.2013
comment
Кроме того, необходимо изменить CGPointMake (0,1.0) на CGPointMake (0,0), что дало мне правильный ответ - person Ser Pounce; 06.03.2013