选定集合视图单元格后,Swift PHImageManager图片库图像获取PHImageManagerMaximumSize

时间:2019-07-04 10:13:58

标签: ios swift

我的情况是,我正在将照片集照片加载到水平集合视图单元Imageview中。为了快速加载图像,我给出了PHImagemanager targetSize: CGSize(width: 120.0, height: 120.0)。现在,一旦用户在水平CollectionView中倾斜了单元格,就需要获取PHImageManagerMaximumSize实际高质量的照片作为预览图像。如何实现?

cell.tag = Int(manager.requestImage(for: asset,
                                            targetSize: CGSize(width: 120.0, height: 120.0),  //PHImageManagerMaximumSize
                                            contentMode: .aspectFill,
                                            options: option) { (result, _) in
                                            cell.picImage?.image = result

})

// MARK: - UICollectionViewDelegate protocol
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

        let selectedCell = collectionView.cellForItem(at: indexPath) as! GalleryCollectionViewCell
        previewImage.image = selectedCell.picImage.image // here I need to get full size exact image (not cropped image)
}

1 个答案:

答案 0 :(得分:1)

您应该保存2张图像。首先是完整的原始图像,其次是裁剪的图像。

首先:当用户选择图像时,将原始图像保存到磁盘(具有高宽比并注意图像尺寸的裁剪图像),然后再次裁剪相同的图像(120x120)并保存磁盘。

并在单元可见时从磁盘读取到内存。

小心!如果图片太大,则您的内存使用量会增加太多,并且操作系统将使您的应用崩溃,因此请不要在内存中保留过多的图片

您可以为可见的细胞计数设置缓冲图像。

如果用户选择单元格,则可以显示原始图像