Получить абсолютное местоположение любого элемента управления в приложении Objective C IPad - PullRequest
9 голосов
/ 16 июня 2011

Мне интересно, есть ли возможность получить абсолютное местоположение элемента управления в приложении ipad / iphone.Например, у меня есть TextField, который находится в дочернем элементе дочернего вида.Я хочу знать значения X и Y относительно верхнего родительского представления (например, в настоящее время x и Y текстового поля возвращают 10 и 10, потому что это местоположение фрейма в его собственном представлении, но я хочу знать это относительноего родитель, который должен быть что-то вроде X = 10 и Y = 220).Мне нужно сделать общий метод для этого как-тоНадеюсь, что это имеет смысл.

Есть идеи?

1 Ответ

28 голосов
/ 16 июня 2011

Вы ищете -[UIView convertPoint:toView:].

Например, чтобы получить источник представления view в терминах базовых координат его окна, вы должны написать:

CGPoint localPoint = [view bounds].origin;
CGPoint basePoint = [view convertPoint:localPoint toView:nil];

Если вы вместо этого хотите преобразовать точку в систему координат какого-либо другого вида в том же окне, вы можете использовать этот вид в качестве аргумента toView: вместо nil:

NSAssert([view window] == [otherView window],
        @"%s: Views must be part of the same window.", __func__);
CGPoint otherPoint = [view convertPoint:localPoint toView:otherView];

Поскольку разныеСистемы координат могут иметь разные масштабы, вы можете найти -convertRect:toView: более полезным, в зависимости от того, что вы планируете делать с координатами.Существуют также аналогичные -fromView: версии методов точечного и прямоугольного преобразования.

...