Что ж, CGAffineTransform - это просто матрица, описывающая вращение, перемещение и масштабирование.
Помните, что вы можете использовать
CGAffineTransform CGAffineTransformConcat ( CGAffineTransform t1, CGAffineTransform t2 );
для объединения преобразований.По сути, это просто означает, что вы умножаете матрицы преобразования.
Итак, поскольку вы знаете, что стандартное вращение вращается вокруг центра UIImageView, вы можете разбить свою задачу на 3 части,
- двигаясь в точку вращения
- вращаться
- двигаться назад
и связывать их.
CGAffineTransform t = imageView.transform;
CGPoint p = rotationPoint - imageView.center;
imageView.transform = CGAffineTransformTranslate(
CGAffineTransformRotate( CGAffineTransformTranslate(t, p.x, p.y), angle) , -p.x, -p.y);
Я не сделалпротестируйте этот код, но вы должны найти решение по этому пути.
РЕДАКТИРОВАТЬ: я также понял, что я не использовал объединение.Вам нужно использовать объединение, если вы используете "CGAffineTransformMake ...".Я просто помещаю функции друг в друга.