Я пытаюсь создать Facebook-подобную ленту. Я использую стандартный Tableview с ограничениями автоопределения, установленными в раскадровке.Динамическая высота ячейки с асинхронными изображениями в Swift 2
Ширина должна быть 100% от области просмотра и высоты в соответствии с соотношением сторон изображения.
Я использую hnk_setImageFromURL от Haneke для загрузки асинхронного изображения с сервера.
Я видел here возможности использовать tableview.beginUpdates()
или endUpdates()
и это приводит к тому, первому воздавать работать нормально, но как только я начинаю прокрутку вычисление высоты идет не так, клетки появляются пустыми и/или приложение падает из-за indexOutOfBounds.
Ручно рассчитывает высоту в heightForRowAtIndexPath
с заданным соотношением сторон от сервера единственным вариантом?
Моя соответствующая часть кода
ViewController:
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 500
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("FeedItem", forIndexPath: indexPath) as! FeedItemTableViewCell
content.hnk_setImageFromURL(NSURL(string: contentImage)!, placeholder: nil, format: nil, failure: nil, success: {image in
cell.content.image = image
self.beginUpdates()
self.endUpdates()
}
)
}
P.S. Побочным эффектом, связанным с использованием Haneke, является то, что я должен предоставить некоторый начальный размер UIImageView, в настоящее время я использую изображение с заполнителем, которое вызывает раздражающую анимацию при загрузке изображения с сервера
у вас есть решение? – BorjaCin
@BorjaCin Я предварительно загрузил пропорции для всех изображений и использовал их во всех вычислениях – Shahar