Я думаю, что вы хотите достичь, это, вероятно, плохая идея, как вам нужно быть осторожным не имеет UITableView больше экрана или вы не сможете прокручивать. Вероятно, лучший подход будет: * Установите высоту таблицыView в соответствии с вашими потребностями. * Не используйте разделитель в таблицеView * Включите сепаратор в виде ячеек внутри ячеек, если они вам понадобятся.
При таком подходе вы закончите работу с таблицей с невидимыми дополнительными строками, которые могут прокручиваться до всех ячеек и с правильным расположением.
Если вы все еще хотите рассчитать размер таблицыView, чтобы быть тем же самым из ячеек, вы можете установить фрейм или ограничение после вызова [self.tableView reloadData] (зависит, если вы используете автозапуск или нет), но я препятствую этот подход, если у вас нет веских оснований для этого.
//example
-(void)viewDidLoad{
[super viewDidLoad]
[self.tableView reloadData];
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
// Max height is 268;
if (self.tableView.contentSize.height<=268){
//tableHeightConstraint is an IBOutlet to the height Constraint.
tableHeightConstraint.constant = self.tableView.contentSize.height;
}else{
tableHeightConstraint.constant = 268;
}
[self.view setNeedsLayout];
}
О, я забыл заметить, что есть 'UIScrollView', который содержит все (включая' UITableView'). Поэтому 'UITableView' может быть больше, чем экран. Я вставил 'tableHeightConstraint.constant = self.tableView.contentSize.height;' и '[self.view setNeedsLayout]' в 'viewWillAppear' и' [self.tableView reloadData] 'в' viewDidLoad', но это не работает. Высота 'UITableView' не соответствует ячейкам. –
Можете ли вы опубликовать образ того, что вы хотите достичь, и/или пример проекта? –