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

ConvertPoint: toView: похоже, не работает

У меня есть TableView с настраиваемыми TableCellViews, на которых есть UILabels и UIButtons. когда одна из кнопок записана на пленку, я хочу показать "подсказку", описывающую текст кнопки.

Большинство работает, кроме тех случаев, когда я пытаюсь преобразовать центральные координаты 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, я приближаюсь к тому, что должно быть, но это всего лишь хак.

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

4b9b3361

Ответ 1

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

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

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