【问题标题】:Loading Images from documentDirectory to UICollectionView - Lag when scrolling将图像从 documentDirectory 加载到 UICollectionView - 滚动时滞后
【发布时间】:2017-07-10 08:01:09
【问题描述】:

我遇到了一些问题,我有大约 50 张具有各种文件扩展名 (jpg/png..etc) 的照片,每个图像大约 3mb,存储在文档目录中。当我尝试将它们加载到集合视图时,滚动时整个 UI 会滞后。在过去的两天里,我一直在处理这个问题,并且已经阅读了许多处理滞后集合视图的 stackoverflow 问题,但我仍然无法解决这个问题。任何帮助表示赞赏!

这是我配置我的 collectionView 单元格的代码:

DispatchQueue.global(qos: .userInteractive).async { [unowned self] in
    let image = UIImage(contentsOfFile: url)

        DispatchQueue.main.async {
            self.cellImage.image = image
        }
    }

令人困惑的部分是这段代码可以很好地显示视频缩略图。

非常感谢任何帮助!

【问题讨论】:

标签: swift xcode scroll swift3 uicollectionview


【解决方案1】:

问题可能是尽管您从后台线程加载了UIImage,但直到UIImageView 尝试绘制它时图像才会解压缩,这发生在主线程上。

您可以在后台线程中添加以下代码来解压缩图像,然后再将其传递给主线程:

let context = UIGraphicsBeginImageContext(CGSize(width: 1, height: 1))
image.draw(at: .zero)
UIGraphicsEndImageContext()

【讨论】:

  • 我已经尝试过这种变体,但它似乎让我的应用程序崩溃得更快......甚至没有给我任何调试错误。可能是内存过载...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-31
  • 1970-01-01
  • 2018-10-03
  • 1970-01-01
  • 2017-04-26
相关资源
最近更新 更多