请求PHAsset/PHImageManager
最初,我是通过PHAsset.fetchAssets获取图像资产的,将它们附加到UIImage
数组中,然后将它们加载到collectionView
中。这没有问题。请求图像的大小足够小,不会导致任何加载延迟。
接下来,当我在collectionView
委托函数中选择didSelectItemAt
单元格时,我试图以更大的图像尺寸(质量)重新请求PHAsset
,并附加将较大的图像放入另一个UIImage
数组中。
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
/* Store the selected image into a variable */
let selectedImage = images[indexPath.item]
/* Request a larger quality image */
if let index = self.images.index(of: selectedImage) {
let selectedAsset = self.assets[index]
let imageManager = PHImageManager.default()
let targetSize = CGSize(width: 600, height: 600)
imageManager.requestImage(for: selectedAsset, targetSize: targetSize, contentMode: .default, options: nil) { (image, info) in
if let image = image {
self.selectedImages.append(image)
}
}
}
print(selectedImages.count)
}
我面临的两个问题:
1)在打印数组的计数时,我得到的是奇数(1、3、5、7等),而不是递增的计数(1、2、3、4等)。不知道为什么会这样吗?导致我的“ selectedImages”数组异常增加。
2)选择collectionView的第二个单元格(索引1)时,会发生此错误:
2019-02-12 21:12:40.029686-0800 ModularX [15837:4640133] [ImageManager] FigPhotoDecompressionContainerDecodeImageForIndexAsync -[PLFigPreheatItem startPreheatRequestWithCompletionHandler:] _ block_invoke_2返回 -16074 from /var/mobile/Media/DCIM/102APPLE/IMG_2427.JPG 2019-02-12 21:12:40.041596-0800 ModularX [15837:4640145] [ImageManager] PFFigCreateCGImageFromImageData UIImage * PLCreateImageFromDataWithFormat(NSData *,BOOL,PLPhotoImageFormatID,NSString *,BOOL,CFDictionaryRef *,NSDictionary *)返回-16074
知道我要去哪里哪里吗?
谢谢