нет, не знаю. Если бы знал, то уже написал бы.
Могу только предположить, что при вращении нужно отнимать от Х и Y какое-то значение, на которое смещается центр картинки относительно верхнего левого угла.
Если это квадрат, то возможно что эта величина может быть рассчитана как-то через синус, то есть delta = sin(angle) * radius. где радиус это половина ширины квадрата. Кроме того надо отбрасывать отрицательные величины, то есть delta = ABS(sin(angle) * radius). ну и напоследок угол для синуса скорее всего тоже надо увеличивать быстрее чем для поворота, например в два раза.
То есть финальная дельта delta = ABS(sin(angle * 2) * radius)
В итоге вы должны писать
Код |
double delta = ABS(sin(angle * 2) * radius); CGAffineTransformMakeTranslation(X - delta, Y - delta);
|
Но это только теория, возможно что к практике оно не имеет никакого отношения
Это сообщение отредактировал(а) Bitter - 4.4.2014, 00:11