Подтвердить что ты не робот

Понимание convertPoint: toView:

Я не совсем понимаю метод convertPoint:toView:.

В документации Apple написано, что

convertPoint:toView:

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

- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view

Но что означает преобразование точки от одного к другому?

Означает ли это, что точки в обеих границах имеют разные единицы? Или просто разные значения?

Если это последний, то почему существует такой метод, когда мы можем просто присвоить значение a contentOffset b?

CGPoint a = [a contentOffset];
[b setContentOffset:a];

Как convertPoint:toView: отличается от простого назначения contentOffset? Или я не понял всю концепцию? Что делает конвертирующие точки? Когда следует использовать этот метод?

4b9b3361

Ответ 1

Каждый UIView имеет свою собственную систему координат. Поэтому, если у вас есть UIView_1, который содержит другой UIView_2, они оба имеют точку (10,10) внутри них.

convertPoint: toView: позволяет разработчику взять точку в одном представлении и преобразовать точку в другую систему координат вида.

Пример: view1 содержит вид2. Верхний левый угол обзора2 находится в точке зрения1 (10,10) или лучше сказать view2.frame.orgin = {10,10}. Это {10,10} базируется в системе координат view1. Пока все хорошо.

Пользователь обращается к view2 в точке {20,20} внутри представления2. Теперь эти координаты находятся в системе координат view2. Теперь вы можете использовать covertPoint: toView: преобразовать {20,20} в систему координат view1. touchPoint = {20,20}

CGPoint pointInView1Coords = [view2 convertPoint:touchPoint toView:view1];

Итак, теперь pointInView1Coords должен быть {30,30} в системах координат view1. Теперь это была простая математика на этом примере, но есть всевозможные вещи, которые способствуют конверсии. Преобразование и масштабирование приходят на ум.

Читайте о рамах, границах и центре UIView. Все они связаны друг с другом, и они имеют дело с системами координат для представления. Это сбивает с толку, пока вы не начнете с ними заниматься. Помните, что этот кадр и центр находятся в исходной системе координат. Границы находятся в системе координат вида.

Джон