我有一个带有自定义TableCellViews的TableView,其上有UILabel和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和rootViewPoint中的y,我接近它应该是什么,但它只是一个黑客。
有谁看到我做错了什么?还是有更好的方法?
答案 0 :(得分:50)
这是因为您正在从错误的视图转换该点。 center
属性实际上位于按钮的superview的坐标系中,无论是什么,所以当你将它转换为rootView时,你必须从那里转换它。所以:
rootViewPoint = [[button superview] convertPoint:btnPoint toView:rootView];
这应该可以满足您的需求。