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