Конечно. Переведите желаемую точку в 0, 0. Затем примените любое преобразование, которое хотите. Затем примените обратный перевод.
Скажем, вы хотите повернуть вокруг точки 25, 25. Сделайте это:
CGAffineTransform *t = CGAffineTransformMake();
t = CGAffineTransformTranslate(t, -25, -25);
t = CGAffineTransformRotate(t, angle);
t = CGAffineTransformTranslate(t, 25, 25);
В этот момент t является преобразованием, которое будет вращаться на угол около 25, 25.