如何在tableview中获取节头的绝对位置?

时间:2013-07-28 05:29:04

标签: ios objective-c uitableview

如何在tableview中获取节头的绝对位置?

我已经使用tableView:viewForHeaderInSection:来获取标题的视图。但现在我需要在屏幕上获取此视图的绝对位置。 返回值的框架不是屏幕中的绝对位置。我也尝试调用superview,但似乎不起作用。

2 个答案:

答案 0 :(得分:9)

tableView:viewForHeaderInSection:是一种用于创建标题视图以供显示的UITableViewDelegate方法。但是,这意味着视图尚未被添加到视图层次结构中,使得它的框架对于您的目的而言毫无意义。

尝试

UIView *headerView = [tableView headerViewForSection:sectionIndex];

代替。从那里,您可以在返回的视图上尝试以下方法,以在任何其他视图的坐标系中获取视图的矩形:

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

答案 1 :(得分: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;
}