У меня есть изображение на 100x100 пикселей, которое я хочу нарисовать под различными углами, повернутыми вокруг центра изображения. Следующие работы кода, но вращается вокруг исходного origo системы координат (верхний левый угол) а не переведенное местоположение. Таким образом изображение не повернуто вокруг себя, но вокруг левого верхнего угла экрана.
Следующий код был выполнен в пользовательском представлении в пустом приложении ни с чем иным кроме этого.
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, -50, -50);
CGContextRotateCTM (context, 0.3);
CGContextTranslateCTM(context,768/2,1024/2);
[image drawAtPoint:CGPointMake(0,0)];
}
Я попытался делать то же использование CGAffineTransform, но получил те же результаты.
Вращение всегда связано с началом координат; что вам нужно сделать, так это не победить это, а воспользоваться этим.
Главное здесь помнить, что перевод перемещает начало координат. Поэтому, если вы хотите, чтобы изображение было сосредоточено в центре экрана и вращалось вокруг этого центра, вам нужно сделать следующее:
Представьте себе движение изображения на iPad на каждом из этих шагов. Или, что еще лучше, возьмите записку Post-It и смоделируйте это вручную:
Вы заметите, что заметка повернулась и оказалась в центре.