Как мне обновить высоту ячейки после загрузки изображения с сервера методом Kingfisher setImage with completion handler
? После загрузки изображения я изменяю его ограничение по высоте, используя следующее: cell.imageHeight.constant = image.size.height * cell.frame.size.width / image.size.width
.
Образ загружается и устанавливается по методу cellForRow
, но я пробовал и в willDisplayCell
, те же проблемы. Я также проверяю cell.tag == indexPath.row
в обработчике завершения метода setImage.
Я уже пробовал следующие методы, и ни один из них не работал:
heightForRow
- это UITableViewAutomaticDimension
, а estimatedHeightForRowAt
- это некоторое значение (максимально возможная ячейка) и все другие комбинации этих 2
- обновление таблицы / начало / конец
reloadRows
в indexPath
cell.setNeedsLayout
, layoutIfNeeded
или layoutSubviews
dispatch main async
Любой из них сталкивается с одними и теми же проблемами: таблица переходов при прокрутке, неверная высота ячейки при первом отображении и ее обновление. Мне нужно прокрутить вверх и вниз, чтобы скрыть и показать эту ячейку, неправильная высота, рассчитанная по просмотру таблицы в некоторых ячейках. .
Если я прокручиваю вверх, все в порядке, потому что все изображения уже в кеше.
Как все это делают? Как это делает Facebook или Instagram? Как обновить высоту ячейки после ее получения из любого API?