Извините, если это очевидно или рассматривается в другом месте, но я весь день гуглю и не нашел решения, которое действительно сработало.
Моя проблема заключается в следующем: в настоящее время я рисую изображение в полноэкранном режиме UIView, для примера скажем, что изображение находится в правом нижнем углу UIView. Я хотел бы сделать преобразование вращения (CGAffineTransformMakeRotation) в центре этого изображения, однако по умолчанию команда вращения вращается вокруг центра UIView самостоятельно. В результате мое изображение перемещается по экрану, когда я поворачиваюсь, вместо того чтобы оставаться на месте и вращаться вокруг своего собственного центра.
Исходя из того, что я собрал, мне нужно перевести мой контекст так, чтобы источник (центр UIView) находился в центре моего изображения, повернуть, а затем восстановить контекст, переведя обратно в исходное место.
Следующее - самая близкая вещь, которую я получил к работе, но проблема в том, что, когда изображение вращается, оно движется вниз, пока оно вращается. Я думаю, что это вызвано анимацией анимации 1-го шага и 3-го шага перевода вместо того, чтобы просто понять, что начальная и конечная точки в переводах будут одинаковыми ...
// Before this i'd make a call to a function that draws a path to a passed in context
CGAffineTransform inverseTranslation = CGAffineTransformMakeTranslation( transX, transY );
CGAffineTransform translation = CGAffineTransformMakeTranslation( -transX, -transY );
CGAffineTransform rot = CGAffineTransformMakeRotation( 3.14 );
CGAffineTransform final = CGAffineTransformConcat( CGAffineTransformConcat( inverseTranslation, rot ), translation );
// Then i apply the transformation animation like normal using self.transform = final etc etc
Я также пробовал такие вещи, как CGContextTranslateCTM и CGContextSaveGState / UIGraphicsPushContext, но, похоже, они малоэффективны.
Я боролся с этим уже несколько дней, и мое текущее решение кажется близким, но я понятия не имею, как избавиться от этой переводящей анимации. У кого-нибудь есть решение для этого или лучший способ сделать это?
[обновление]
В настоящее время я рисую свое изображение по центру в центре UIview, а затем устанавливаю свойство UIView.center в исходное положение, которое я хотел бы повернуть, а затем выполняю команду rotate. Похоже, что-то вроде хака, но пока я не смогу заставить работать реальные переводы, это мой единственный выбор.
Спасибо!