Преобразование координат между родительским / дочерним UIView после CGAffineTransform - PullRequest
33 голосов
/ 15 января 2010

Прежде чем приступить к выполнению всего вручную, я хотел бы спросить, есть ли какая-то помощь, чтобы получить от фреймворка.

У меня есть UIView, который содержит другой UIView с картой. Родительский UIView содержит некоторые легенды для карты. Изначально я определяю некоторые координаты в виде карты. например (100, 40), и поместите часть графики там в родительском представлении (как галочка в Google Maps и т. Д.). Родительский вид и дочерний вид имеют размер 300x200 и имеют одинаковое происхождение. Это означает, что (100, 40) - это одна и та же точка в обоих ракурсах.

Теперь я увеличиваю и перемещаю дочерний UIView (карту), используя CGAffineTransform, и координата (100, 40) теперь находится где-то еще. Родительское представление фактически является здесь маской.

Могу ли я использовать матрицу CGAffineTransform или другую часть каркаса для вычисления и информирования родительского представления о том, где разместить метку теперь, когда точка сместилась?

т.е. (100, 400) в дочернем представлении по сравнению с (100, 40) в родительском представлении, с чем оно сравнивается после преобразования?

Спасибо за предложения или помощь.

Анимация ребенка UIView

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:1.0]; 
    CGAffineTransform transform = CGAffineTransformMakeScale(1.8f, 1.8f);
    worldMap.transform = transform;
    worldMap.bounds.origin = newPos;
    [UIView commitAnimations];

1 Ответ

73 голосов
/ 15 января 2010

UIView -convertPoint:toView: и -convertPoint:fromView: должны работать на вас.

...