Получить высоту UITableView без полос прокрутки - PullRequest
40 голосов
/ 27 марта 2010

Мне нужно получить полную высоту UITableView (т.е. высоту, на которой больше нечего прокручивать). Есть ли способ сделать это?

Я пробовал [tableView sizeThatFits:CGSizeZero], но это возвращает только 0x0 CGSize.

Ответы [ 4 ]

93 голосов
/ 27 марта 2010

Попробуйте метод contentSize, который унаследован от суперкласса UITableView, UIScrollView.Однако вы можете обнаружить, что contentSize возвращает неверное или устаревшее значение, поэтому вам, вероятно, следует сначала вызвать layoutIfNeeded, чтобы пересчитать макет таблицы.

- (CGFloat)tableViewHeight
{
   [tableView layoutIfNeeded];
   return [tableView contentSize].height;
}
6 голосов
/ 26 июня 2016

Обязательный Свифт 3,0 & 2,2 ответ.

var tableViewHeight: CGFloat {
    tableView.layoutIfNeeded()

    return tableView.contentSize.height
}
0 голосов
/ 19 июня 2013

Попробуйте передать другой параметр CGSize вместо CGSizeZero. SizeThatFits: метод использует этот параметр для вычисления своего результата. Попробуйте передать self.view.size из любого класса, который делает этот вызов.

0 голосов
/ 12 января 2012

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

После небольшого взлома я узнал, как заставить табличное представление пересчитать размер его содержимого. В моем случае достаточно сбросить фрейм табличного представления, чтобы оно заработало:

- (CGSize)com_lohika_contentSize
{
    CGRect theFrame = self.frame;
    self.frame = CGRectZero;
    self.frame = theFrame;
    [self layoutIfNeeded];
    return [self contentSize];
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...