convertPoint:toView:似乎无法工作

17

我有一个TableView,其中包含自定义的TableCellViews,其中包含UILabels和UIButtons。 当其中一个按钮被点击时,我想显示一个“工具提示”,描述按钮的文本。

除了当我尝试将UIButton的中心坐标转换为根视图(即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,我接近了应该得到的结果,但这只是一个hack。

有人看出我做错了什么吗?或者有更好的方法吗?

1个回答

52

这是因为您将点从错误的视图转换。实际上,center属性在按钮的superview的坐标系中,因此当您将其转换为rootView时,必须从那里进行转换。所以:

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

那应该能给你想要的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接