У меня была такая же проблема. Вам нужно помнить, что Tableview повторно использует ячейку, и вы загружаете изображение асинхронно.
Рекомендовано : Вы можете попросить команду бэкхенда предоставить вам высоту и ширину изображения, чтобы вы могли рассчитать высоту ячейки и вернуться как можно скорее.
Если вы не можете этого сделать, вы можете сохранить размер загруженного изображения в своем источнике данных. поэтому перед загрузкой изображения проверьте источник данных на предмет размера изображения и обновите константу ограничения высоты.
Другое дело, что вы должны делать это как в ячейке cellForRow, так и в ячейке willDisplay (я знаю, что это не очень хорошая практика, но для удовлетворения автоматического измерения в табличном представлении)
после обновления постоянной высоты вы должны использовать эту пару кода для перезагрузки вашей ячейки.
cell.setNeedsLayout()
cell.layoutIfNeeded()
Как я это сделал
if let imagesize = post.imageSize {
cell.updateHeightPerRatio(with: imagesize)
} else {
// Here load size from URL and update your datasource
}
// Load image from URL with any SDWebimage or any other library you used