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

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

16
задан dandan78 17 October 2012 в 10:10
поделиться

1 ответ

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

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

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

50
ответ дан 30 November 2019 в 15:40
поделиться
Другие вопросы по тегам:

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