Преобразуйте точку источника UIView в ее систему Координаты окна

Я хочу получить источник scrollView в системе координаты окна. Например, в настоящее время, scollView источник (0,51). Но в системе координаты окна это должно быть 51 + 44 (высота панели навигации) +20 (высота строки состояния) = 115. Средства в системе координаты окна scrollView.frame.origin должны быть (0,115). Я попробовал convertPoint: методы, но получение (0,51) или (0,0) иногда. Предоставьте решение этого.Спасибо

30
задан Juan Boero 23 November 2015 в 18:06
поделиться

2 ответа

Я попробовал решение TechZen, но безрезультатно. Вместо преобразования начала координат scrollView, я обратился к справке класса UIWindow из документации apple и преобразовал endCenter клавиатуры в систему координат моего представления, используя этот код [self.view convertPoint:endCentre fromView:[UIApplication sharedApplication].keyWindow]. Этот фрагмент кода сработал и, следовательно, решил мою проблему. Однако, все еще остается вопрос, почему он не дает правильную координату scrollView.origin.So, в основном, я получил обходной путь, конвертируя конечный центр клавиатуры вместо scrollView.origin. О, и я делал все это для того, чтобы вычислить новую высоту моего scrollView, когда клавиатура появляется на экране. Так что, если у кого-то есть решение этой проблемы или какое-либо лучшее решение, пожалуйста, сообщите нам всем.

10
ответ дан 27 November 2019 в 23:24
поделиться

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

[[self superview] convertPoint:self.frame.origin toView:theWindow];

Однако, еще проще преобразовать нулевую точку из самого вида в окно. Эти две части кода эквивалентны, и поэтому совсем не обязательно использовать начало координат.

[self convertPoint:CGPointZero toView:theWindow];
55
ответ дан 27 November 2019 в 23:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: