Используя Kingfisher, изображения загружаются неправильно в UITableView
Я только начал использовать KingFisher.
Когда вы выполняете слишком быструю прокрутку вниз по UITableView, все сетевые запросы / запросы на загрузку резервируются, поэтому со временем прокрутка прекращается, и все еще завершается предыдущий запрос.
Это приводит к тому, что все изображения мерцают разными изображениями, пока не будут выполнены все запросы на резервное копирование.
Вот мой код для извлечения изображений из кеша или сети.
if ImageCache.defaultCache.cachedImageExistsforURL(finished_URL!) == true {
print("image is already cached.")
if cell.tag == indexPath.row{
cell.card_imageIV.image = UIImage(imageLiteral: "ic_error")
KingfisherManager.sharedManager.retrieveImageWithURL(finished_URL!, optionsInfo: nil, progressBlock: nil, completionHandler: { (image, error, cacheType, imageURL) -> () in
cell.card_imageIV.image = image
print("Retrieved cached image")
})
}
}else{
cell.card_imageIV.kf_setImageWithURL(finished_URL!, placeholderImage: self.placeholderImage, optionsInfo: nil, completionHandler: { image, error, cacheType, imageURL in
print("\(card_name): Finished")
})
}
Я попробовал следующую документацию на https://github.com/onevcat/Kingfisher для отмены всех предыдущих задач загрузки, используя, но не помогло.
Следующий код, который я пробовал:
// The image retrieving will stop.
imageView.kf_cancelDownloadTask()
Это только отменяет текущие ячейки, по крайней мере, я могу понять.
1 ответ
У меня абсолютно такая же проблема с моим проектом. Я ищу способ реализовать то же самое, что и вы: если я прокручиваю ОЧЕНЬ быстро, я хочу отменить предыдущие загрузки. Вот мой подход к этому, используя библиотеку KingFisher (Swift 3):
func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {
let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentify)
cell?.imageView?.kf.cancelDownloadTask()
}
Этот метод должен быть объявлен в табличном представлении делегата. Это отменит задание загрузки уже прокрученной ячейки.
Надеюсь это поможет!