вы не можете изменить высоту в cellForRowAtIndexPath.TableView должен знать высоту, прежде чем он отобразит весь tableView.Вот почему tableView:heightForRowAtIndexPath:
вызывается для каждой ячейки, имеющейся в вашем tableView.
Это, например, необходимо для вычисления размера scrollView, в котором находятся ячейки.
Но поскольку создание ячейки следуетопределенный алгоритм, который вы создали, вы должны быть в состоянии выяснить высоту каждой ячейки до вызова tableView:cellForRowAtIndexPath:
.
Используйте те же части кода, которые определяют высоту ячейки в cellForRowAtIndexPath: и поместите их в heightForRowAtIndexPath:
Оптимизация важна для heightForRowAtIndexPath, поскольку она вызывается для каждой ячейки.Поэтому убедитесь, что вы выполняете только минимальный объем работы, необходимый для расчета высоты.