如何在TableView中获取Section Header的绝对位置?

7
如何获取UITableView中section header的绝对位置?
我已经使用tableView:viewForHeaderInSection:方法获取了header视图,但现在我需要获取该视图在屏幕上的绝对位置。返回值的frame不是屏幕上的绝对位置。我也尝试调用superview,但好像没有起作用。

返回值是什么?听起来你需要考虑表格视图的偏移量和表格视图的内容偏移量(我不确定是否存在内容偏移量)。 - JeffRegan
我只需要获取屏幕上节标题的绝对位置。但是我不知道该怎么做...(使用tableView:viewForHeaderInSection:似乎不是正确的方法) - billbai
最终,我通过给我的部分标题视图设置标签并使用该标签获取它来解决了我的问题。非常感谢~ - billbai
2个回答

9

tableView:viewForHeaderInSection:是用于创建显示表头视图的UITableViewDelegate方法。然而,这意味着该视图尚未添加到视图层次结构中,因此其框架对您的目的没有意义。

建议:

UIView *headerView = [tableView headerViewForSection:sectionIndex];

相反,您可以尝试在返回的视图上使用以下方法来获取任何其他视图坐标系中视图的矩形:

[headerView convertRect:[headerView bounds] toView:[headerView window]];

1
最终,我通过给我的部分标题视图设置标签并使用该标签获取它来解决了我的问题。非常感谢~ - billbai
[tableView rectForHeaderInSection:section] - tettoffensive

0
假设您的顶层视图直接包含表视图,而表视图又包含标题:
- (CGRect) getHeaderAbsoluteFrame : (UIView *)headerview :(UIView *)tableview
{
  CGRect frame = headerview.frame;
  CGRect tableFrame = tableview.frame;

  float x = tableview.  origin.x + headerview.frame.origin.x;
  float y = tableview.frame.origin.y + headerview.frame.origin.y;

  CGRect rect = CGRectMake (x,y,headerview.frame.size.width, headerview.frame.size.height);
  return rect;
}

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