ios - 将调整大小的图像从 Core Data 插入 UICollectionView 的最简单方法是什么?

标签 ios swift core-data uicollectionview uiimageview

当我将本地数组中的图像设置到每个 Collection View 单元格中时,滚动很滞后。这是因为显示单元格时正在使用全尺寸的 UIImage。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PhotoCell", for: indexPath) as! PhotoCell

    let image = images[indexPath.row]
    cell.imageView.image = image

    return cell
} 

为了尝试解决这个问题,我编写了一种在运行时将图像大小调整为适当大小的方法。

private func resizeImages(images: [UIImage], size: CGSize) -> [UIImage?] {//...}

但是在 viewDidLoad 中调整数组中所有图像的大小需要花费相当多的时间。

这是一个简单的相册应用程序,因此我希望避免使用任何事件或加载指示器。 鉴于可以访问从 Core Data 获取的图像数据,如何在 Collection View 中设置图像,使其在滚动时不会滞后?

最佳答案

您应该在保存到 CoreData 时执行此任务,而不是在运行时调整图像大小。您应该存储两张图像,而不是保存一张图像。一张为全尺寸(高分辨率),另一张为缩略图(调整大小)。仅在 CollectionViewCell 中加载缩略图以避免滚动滞后。

关于ios - 将调整大小的图像从 Core Data 插入 UICollectionView 的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52562168/

相关文章:

iphone - 从其他应用返回到应用后会触发哪些功能?

ios - 将自定义 (Retina) 图像添加到 UIBarButtonItem

ios - 在 ios 中使用 Google Analytics 是否需要给予 Opt-In/Opt-Out UIAlertView ?

swift - 无法调用 NSManagedObject 类上的指定初始化程序 -- CoreData

ios - 在 Core Data 中存储 UIColor 对象

ios - isIdleTimerDisabled 在 iOS 12 中不起作用

ios - 对象的打印结果是什么?

ios - 在没有 Segues 的 ViewController 之间传递数据

Swift - 长按按钮上的手势以使用 AVFoundation 录制音频

swift - NSPredicate:无法解析关系的格式字符串