【问题标题】:Caching images in collection view在集合视图中缓存图像
【发布时间】:2017-10-11 03:30:43
【问题描述】:

我被困在如何解决问题上。我目前有一个 iPhone 应用程序,它实际上是 Instagram,但只是水平和分页,用户可以在其中看到朋友的照片。

现在我创建了一个从 firebase 抓取图像并将它们放入数组的函数。现在这与执行共享 URLSession 一起工作得很好。我注意到我的应用程序的内存使用率很高,所以我添加了一个 URLcache,并设置了它的大小限制,现在我想起来实际上有点高。但是我的内存仍然很高(171mb),而且只加载了 4 张图像,这让我看起来好像没有正确缓存数据。

我仍在学习如何使用 URLSessions 以及缓存,因此如果我设置错误,这也可能导致问题。网上有人说使用 SDWebImage,但实际上,用户不会向下滚动或能够快速向下滚动,因为启用了第一个页面并且它是水平的。这是我的一些代码,请告诉我你认为我应该做什么。

 urlcache in 
viewDidLoad() { //probably too high..
  let memoryCapacity = 500 * 1024 * 1024
    let diskCapacity = 500 * 1024 * 1024
    let urlCache = URLCache(memoryCapacity: memoryCapacity,     diskCapacity: diskCapacity, diskPath: "myDiskPath")
    URLCache.shared = urlCache
 }
 // cellforrow
if posts.count != nil  {
         let pozt = posts[indexPath.row].pathToImage
        let url = URL(string: pozt!)
        URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in
            if error != nil {
                print(error?.localizedDescription as Any)
                return
            }
            DispatchQueue.main.async {
                cell.myImage.image = UIImage(data: data!)
                self.loader.stopAnimating()
            }
        }).resume()
    }
    cell.myImage.image = UIImage(named: imaqes[0])
  return cell
 }

【问题讨论】:

  • 有帮助吗?:)

标签: ios swift caching nsurlsession


【解决方案1】:

我认为几乎所有使用 swift 的程序员都使用库来缓存图像。 我使用 KingFisher 而不是 SDWebImage。它轻巧且易于使用。

安装:

Pod 文件:

pod 'Kingfisher'

在终端:

pod install

在 swift 文件中:

import Kingfisher

在你的情况下使用它:

// cellforrow
if posts.count != nil  {
    let pozt = posts[indexPath.row].pathToImage
    let url = URL(string: pozt!)

    DispatchQueue.main.async {
        cell.myImage.kf.setImage(with: url!) //Using kf for caching images
    }
}

return cell

也许您应该使用 .kf.setImage 和完成处理程序来删除加载程序。你应该明白了。

希望对你有帮助

【讨论】:

  • 是的,我的意思是我认为这可能就是我要找的东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多