convertPoint: toView: не похоже на работу - PullRequest
16 голосов
/ 12 марта 2010

У меня есть TableView с пользовательскими таблицами TableCellView, на которых есть UILabels и UIButton. когда нажата одна из кнопок, я хочу показать «всплывающую подсказку», описывающую текст кнопки.

Почти все работает, за исключением случаев, когда я пытаюсь преобразовать координаты центра UIButton в координаты rootView, который является UIView.

Вот код:

- (void) fancyLabelButtonPressed: (UIButton *) button {
  CGPoint btnPoint = button.center;   // x=200.5 y=27.5
  CGPoint rootViewPoint = [button convertPoint:btnPoint toView:rootView];
  // rootViewPoint -> x=390.5 y=197.5
  CGPoint pointToUse = CGPointMake(btnPoint.x +20, rootViewPoint.y - 23); // Hack to get it close
}

Как можно rootViewPoint.x=390.5 когда я в портретном режиме? !!? Используя x из кнопки и y из rootViewPoint, я получаю почти то, что должно быть, но это всего лишь взлом.

Кто-нибудь видит, что я делаю не так? или есть лучший способ?

1 Ответ

50 голосов
/ 12 марта 2010

Это потому, что вы конвертируете точку с неправильной точки зрения.Свойство center фактически находится в системе координат суперпредставления кнопки, что бы это ни было, поэтому, когда вы конвертируете его в свой rootView, вы должны конвертировать его оттуда.Итак:

rootViewPoint = [[button superview] convertPoint:btnPoint toView:rootView];

Это должно дать вам то, что вы ищете.

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