Как получить абсолютную позицию заголовка раздела в табличном виде?

Как получить абсолютную позицию заголовка раздела в табличном виде?

Я уже использовал tableView:viewForHeaderInSection: чтобы получить представление заголовка. Но теперь мне нужно получить абсолютную позицию этого представления на экране. кадр возвращаемого значения не является абсолютной позицией на экране. Я также пытался вызвать superview, но, похоже, это не работает.

2 ответа

Решение

tableView:viewForHeaderInSection: это UITableViewDelegate метод для создания представления заголовка для отображения. Это означает, однако, что представление не было добавлено в иерархию представления, что делает его фрейм бессмысленным для ваших целей.

Пытаться

UIView *headerView = [tableView headerViewForSection:sectionIndex];

вместо. Оттуда вы можете попробовать следующие методы в возвращенном представлении, чтобы получить прямоугольник представления в системе координат любого другого представления:

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

Предполагая, что ваше представление верхнего уровня напрямую содержит табличное представление, которое, в свою очередь, содержит заголовок:

- (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;
}
Другие вопросы по тегам