iOS: происхождение UIView относительно UIWindow - PullRequest
1 голос
/ 10 ноября 2011

UIView имеет источник, содержащийся в его свойствах frame или bounds относительно своего суперпредставления. Скажем, я хочу сделать что-то, что захватывает происхождение UIView относительно окна UIWindow. Должен ли я идти на каждый шаг вверх по иерархии, чтобы сделать этот расчет, или есть более простой, более прямой путь?

Ответы [ 3 ]

5 голосов
/ 10 ноября 2011

Я думаю, вы ищете этот метод

convertPoint: toView

2 голосов
/ 10 ноября 2011

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

[aView convertRect: aView.frame toView: [экран UIWindow]]

Этот метод находится в Описание классов UIView

0 голосов
/ 12 декабря 2017

Лучший и самый простой способ сделать это - использовать convertPoint:toView или convertRect:toView на UIWindow. Чтобы сделать это правильно, вам нужно предоставить представление, окно которого совпадает с окном представления, координаты которого вы пытаетесь преобразовать.

Для вашего вопроса вам нужно знать происхождение вида относительно его расположения в окне. К счастью, вам не нужно знать окно, чтобы получить это. Согласно документации UIView convert:to методов.

Вид, в точку которого система координат должна быть преобразована. Если view равен nil, этот метод вместо этого преобразует в базовые координаты окна. В противном случае и представление, и получатель должны принадлежать одному и тому же объекту UIWindow.

Это означает, что вы можете просто поставить nil для достижения того, что вам нужно!

В Свифте:

let pointInWindow = yourView.convert(.zero, to: nil)

В Objective-C:

CGPoint pointInWindow = [yourView convertPoint:CGPointZero toView:nil];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...