Рассчитайте таблицу contentSize.height с помощью пользовательских ячеек разных типов iphone - PullRequest
14 голосов
/ 12 июля 2010

В моем приложении табличное представление имеет различные типы пользовательских ячеек с разной высотой. Я хочу поместить представление под этим tableView, для которого мне нужно вычислить высоту таблицы contentView, как я могу это сделать?

Раньше я делал это так: (noOfRows * cell_height), но это было для статических высот.

Спасибо заранее.

Ответы [ 7 ]

20 голосов
/ 18 августа 2011

UITableView является подклассом UIScrollView, поэтому вы можете использовать метод экземпляра contentSize в вашем табличном представлении:

yourtableView.contentSize.height

Должен дать вам высоту вашего представления содержимого табличного представления

11 голосов
/ 26 мая 2016

Это старый вопрос, но сегодня я решил свою проблему с этим

  func viewDidLoad() { 
      super.viewDidLoad()

      tableView.rowHeight = UITableViewAutomaticDimension
      tableView.estimatedRowHeight = 44 //  >= 2
    }     

  func getTableViewHeight() -> CGFloat{ 
      tableView.reloadData()
      tableView.layoutIfNeeded()

      return tableView.contentSize.height + tableView.contentInset.bottom + tableView.contentInset.top
    }
4 голосов
/ 29 июля 2016

у меня есть высота вычислений в viewDidLayoutSubviews () для контроллера представления содержимого. Работа для меня (табличное представление автоматических размеров ячеек);

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews();
    let height = table.contentSize.height+table.contentInset.bottom+table.contentInset.top
    preferredContentSize = CGSize(width: 305, height: height);
}
1 голос
/ 04 декабря 2017

Верхний и нижний колонтитулы раздела не учитываются в высоте таблицы, учтите это

CGSize sz = self.table.contentSize;
sz.height += self.table.contentInset.bottom +
             self.table.contentInset.top + 
             self.table.numberOfSections * self.table.sectionHeaderHeight;
0 голосов
/ 13 июля 2010

Если вы реализовали свои собственные пользовательские ячейки, то вы, вероятно, уже реализовали эту функцию в делегате таблицы:

- (CGFloat)tableView:(UITableView *)tableView
           heightForRowAtIndexPath:(NSIndexPath *)indexPath

Просто выполните итерацию по строкам, вызывая эту функцию для каждой из них, иПодвести итог.

0 голосов
/ 13 июля 2010

Я думаю, что вы ищете self.view.bounds.size.height.

Ознакомьтесь с Подробное сообщение Оливера Дробника о создании представления таблицы для повторной загрузки. В его случае это проще, потому что вид сверху, поэтому он проверяет наличие отрицательного содержимого contentOffset.

Если вы хотите, чтобы это было внизу, вы можете проверить на scrollView.contentOffset.y > (self.view.bounds.size.height + pullToReloadViewHeight)

0 голосов
/ 13 июля 2010

Самая простая вещь, о которой я могу подумать, - это установить ваше представление как tableFooterView

таблицы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...