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, я приближаюсь к тому, что должно быть, но это всего лишь хак.
Кто-нибудь видит, что я делаю неправильно? или есть лучший способ?
Ответы
Ответ 1
Это потому, что вы конвертируете точку из неправильного представления. Свойство center
фактически находится в системе координат кнопки superview, независимо от того, что есть, поэтому, когда вы конвертируете его в свой rootView, вы должны преобразовать его оттуда. Итак:
rootViewPoint = [[button superview] convertPoint:btnPoint toView:rootView];
Это должно дать вам то, что вы ищете.