convertPoint:toView:似乎没有工作

时间:2010-03-11 21:54:06

标签: iphone coordinates

我有一个带有自定义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,我接近它应该是什么,但它只是一个黑客。

有谁看到我做错了什么?还是有更好的方法?

1 个答案:

答案 0 :(得分:50)

这是因为您正在从错误的视图转换该点。 center属性实际上位于按钮的superview的坐标系中,无论是什么,所以当你将它转换为rootView时,你必须从那里转换它。所以:

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

这应该可以满足您的需求。