Я только что дал этому шанс. Нечто подобное должно дать вам результат, который вы ищете ...
- (void)rotateView:(UIView *)view aroundPoint:(CGPoint)point withAngle:(double)angle{
//save original view center
CGPoint originalCenter = view.center;
//set center of view to center of rotation
[view setCenter:point];
//apply a translation to bring the view back to its original point
view.transform = CGAffineTransformMakeTranslation(originalCenter.x, originalCenter.y);
//multiply the view's existing rotation matrix (the translation) by a rotation and apply it to the view
//thereby making it rotate around the external point
view.transform = CGAffineTransformConcat(view.transform, CGAffineTransformMakeRotation(angle));
}
Просто чтобы немного объяснить мои рассуждения ...
То, что мы в основном делаем, это физическое смещение вида в точку вращения, затем применение перевода, чтобы он выглядел так, как будто он остался в исходной точке. Затем, если мы умножим вращение на новый перевод представления, мы, по существу, вращаем весь вид и его систему координат, поэтому он выглядит как вращение вокруг заданной точки. Надеюсь, я это хорошо объяснил. : | Если нет, то я предлагаю поискать матрицы преобразований в Интернете, может быть, вы найдете более подробные объяснения того, как они там складываются!