Мне нужно получить полную высоту UITableView
(т.е. высоту, по которой больше нечего будет прокручивать). Есть ли способ сделать это?
Я пробовал [tableView sizeThatFits:CGSizeZero]
, но это возвращает 0x0 CGSize
.
Мне нужно получить полную высоту UITableView
(т.е. высоту, по которой больше нечего будет прокручивать). Есть ли способ сделать это?
Я пробовал [tableView sizeThatFits:CGSizeZero]
, но это возвращает 0x0 CGSize
.
Попробуйте метод contentSize
, который наследуется от суперкласса UITableViews, UIScrollView. Однако вы можете обнаружить, что contentSize
возвращает неправильное или устаревшее значение, поэтому сначала вы должны сначала вызвать layoutIfNeeded
, чтобы пересчитать раскладку таблиц.
- (CGFloat)tableViewHeight
{
[tableView layoutIfNeeded];
return [tableView contentSize].height;
}
Обязательный Swift 3.0 и 2,2 ответ.
var tableViewHeight: CGFloat {
tableView.layoutIfNeeded()
return tableView.contentSize.height
}
Если число строк таблицы просмотра изменилось, и вам действительно нужно знать размер содержимого представления таблицы, включающий последние изменения, я не нашел, что метод layoutIfNeeded действительно помогает.
После небольшого взлома я узнаю, как заставить табличное представление пересчитать его размер содержимого. В моем случае достаточно reset рамки представления таблицы, чтобы заставить его работать:
- (CGSize)com_lohika_contentSize
{
CGRect theFrame = self.frame;
self.frame = CGRectZero;
self.frame = theFrame;
[self layoutIfNeeded];
return [self contentSize];
}
Попробуйте передать другой CGSize параметр вместо CGSizeZero. Метод sizeThatFits: использует этот параметр для вычисления его результата. Попробуйте передать в self.view.size из любого класса, который делает этот вызов.