我是iOS编程的新手。我正在创建一个简单的应用程序,该应用程序从特定链接(. ~/.nvm/nvm.sh
)中加载图像。图像已完全从服务器下载,并照常在firestore
的每个单元格上可见。但是问题是当我向上或向下滚动时,这些图像会再次加载。我认为它再次开始下载,因为当我关闭Internet连接时,这些图像不再被加载。
这是我在每个单元格中设置图像的方式
collectionview
以下是加载图片的样子:override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! CollectionCell
let explore = dataAppend[indexPath.item]
//cell.imageDisplay.text = explore.title
if let imageUrl = explore.image {
cell.imageDisplay.loadImageWithData(urlString: imageUrl)
}
//print(explore.image)
return cell
}
loadImageWithData(urlString: imageUrl)
答案 0 :(得分:2)
var imageCache = NSMutableDictionary()
class CustomImageView: UIImageView {
func loadImageUsingCacheWithUrlString(urlString: String) {
self.image = nil
if let img = imageCache.valueForKey(urlString) as? UIImage{
self.image = img
return
}
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(NSURL(string: urlString)!, completionHandler: { (data, response, error) -> Void in
if(error == nil){
if let img = UIImage(data: data!) {
imageCache.setValue(img, forKey: urlString) // Image saved for cache
DispatchQuee.main.asyn{
self.image = img
}
}
})
task.resume()
}
}
}
答案 1 :(得分:1)
您可以改用Kingfisher库,处理图像缓存本身,您无需担心。有关实现,请参见: https://github.com/onevcat/Kingfisher
只需一行代码,您就可以设置图片
imgView.kf.setImage(with: ImageResource(downloadURL: URL(string: imgUrl)!))