如何在tableview中获取节头的绝对位置?
我已经使用tableView:viewForHeaderInSection:
来获取标题的视图。但现在我需要在屏幕上获取此视图的绝对位置。
返回值的框架不是屏幕中的绝对位置。我也尝试调用superview,但似乎不起作用。
答案 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;
}