2010-03-27 6 views

ответ

89

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

- (CGFloat)tableViewHeight 
{ 
    [tableView layoutIfNeeded]; 
    return [tableView contentSize].height; 
} 
-1

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

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

- (CGSize)com_lohika_contentSize 
{ 
    CGRect theFrame = self.frame; 
    self.frame = CGRectZero; 
    self.frame = theFrame; 
    [self layoutIfNeeded]; 
    return [self contentSize]; 
} 
-1

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

5

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

var tableViewHeight: CGFloat { 
    tableView.layoutIfNeeded() 

    return tableView.contentSize.height 
} 
Смежные вопросы