A +
соответствует одному или нескольким экземплярам предыдущего шаблона. *
соответствует нулю или более экземплярам предыдущего шаблона.
Итак, в основном, если вы используете +
, должен быть хотя бы один экземпляр шаблона, если вы используете *
, он будет по-прежнему совпадают, если нет экземпляров.
Нет! Вам не нужно каким-либо образом перезагружать tableView после завершения загрузки изображения в определенной ячейке. Кроме этого, вы все делаете правильно. Я тоже использую Kingfisher.
Но в будущем вы могли бы просто создать функцию в своем классе ячеек, скажем setupCell(_ imageURL: URL?)
. В любом случае, продолжая, в вашем методе cellForRow
, просто сделайте это так:
cell.gifImage.kf.setImage(with: imageView, placeholder: placeHolderImage, completionHandler: nil)
Теперь, в случае, если изображение не загружено или у вас нет строки URL-адреса изображения, которую нужно сделать в URL
объект, вы можете поймать его в блоке ошибок Kingfisher, тогда вам нужно будет передать ваш объект error image
(a UIImage
) вашему imageView
, чтобы не было дублированного изображения.
Например, у меня есть следующее в функции setupCell()
моей ячейки:
if let url = vendor.image?.URLEscaped {
let resource = ImageResource(downloadURL: url, cacheKey: url.absoluteString)
self.imageView_Vendor.kf.setImage(with: resource, options: [.transition(.fade(0.2)), .cacheOriginalImage])
return
}
self.imageView_Vendor.image = nil
Надеюсь, это поможет! 1115]
Для обработки высоты изображения это может помочь: https://stackoverflow.com/a/52787062/3231194