Я пробовал так много способов загрузить изображение с сервера в режиме просмотра коллекции, но при прокрутке все еще существует задержка!
это мой ImageProvider
класс:
let imageCache = NSCache<AnyObject, AnyObject>()
class ImageProvider: UIImageView {
var imageUrl: String?
func loadImage(from urlString: String) {
self.imageUrl = urlString
let url = URL(string: urlString)!
image = nil
if let imageFromCache = imageCache.object(forKey: urlString as AnyObject) as? UIImage {
self.image = imageFromCache
return
}
URLSession.shared.dataTask(with: url) { (data, request, error) in
if error != nil {
print(error!)
return
}
DispatchQueue.main.async {
let imageToCache = UIImage(data: data!)
if self.imageUrl == urlString {
self.image = imageToCache
}
imageCache.setObject(imageToCache!, forKey: urlString as AnyObject)
}
}.resume()
}
}
настройка данных:
func setupCVData(cell: TrackCell, item: Audio) {
cell.title.text = item.name
cell.url = URL(string: item.url!)!
if let url = cell.url {
var imageLink = String()
(_, _, imageLink) = fetcher.getData(from: url)
cell.imageUrl = imageLink
cell.updateImageView()
}
}
и updateImageView
функция:
func updateImageView() {
self.artwork.loadImage(from: imageUrl)
}
Я пытался вызвать setupCVData
в collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)
и collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)
Я тоже использовал SDWebImage
без везения!
Так что же я тут не так делаю?Я не могу понять проблему.