Всем доброго времени суток
Проблема такая
Хочу чтобы изображения имеющие разный размер, изменяли свою высоту в зависимости от ширины устройства
Имеется tableview
с новостями, типа в вк
Для отображения изображений из url я использую kingfisher
Вот код:
cell.image_of_new.kf.indicatorType = .activity
cell.image_of_new.kf.setImage(
with: url,
placeholder: UIImage(named: “placeholderImage”),
options: [
.scaleFactor(UIScreen.main.scale),
.transition(.fade(1)),
.cacheOriginalImage
])
{
result in
let newHeight = (self.tableview.frame.width * CGFloat(result.value?.image.size.height ?? 100)) / CGFloat(result.value?.image.size.width ?? 100)
cell.image_height.constant = newHeight
}
Как видите после result in
я вычисляю высоту, затем меняю высоту изображения на новую cell.image_height.constant = newHeight
Как обновить ячейку после того как высота изображения поменялась
Я пробовал разные варианты, но это не подходит, ячейки скачут, или уходят в бесконечный цикл и таблица стоит:
cell.setNeedsLayout()
cell.layoutIfNeeded()
------------------------
self.tableView.beginUpdates();
self.tableView.endUpdates();
------------------------
self.tableView.reloadRows(at: [indexPath], with: .automatic)
------------------------
DispatchQueue.main.async {
let newHeight = (self.tableview.frame.width * CGFloat(result.value?.image.size.height ?? 100)) / CGFloat(result.value?.image.size.width ?? 100)
cell.image_height.constant = newHeight
}
-------------------------
Как правильно решить эту проблему, кто сталкивался с этим? Как правильно сделать такую новостную ленту?