我正在使用iOS中的Photos框架为我的应用程序开发覆盖层,其工作方式类似于WhatsApp覆盖层。为了访问用户的图片资源,我需要使用照片,并且无法使用UIImagePickerController。PHCachingImageManager不缓存Swift 2.3
,以获得更好的介绍与框架,我决定先建立自己的图片选择,我开始了与加载图片来自我的画廊,并把它变成一个集合视图一个简单的屏幕上。一旦我使用PHAsset.fetchAssets(with: .image, options: fetchOptions) as PHFetchResult<PHAsset>
资产。然后,我在一个阵列中使用这些资产,在默认启动缓存PHCachingManager如下:
cachingImageManager.startCachingImages(for: self.assets,
targetSize: CGSize(width: 150.0, height: 150.0),
contentMode: .default,
options: nil)
在我cellForItemAtIndexPath为的CollectionView,我使用:
cachingImageManager.requestImage(for: assets[indexPath.row], targetSize: CGSize(width: 150.0, height: 150.0), contentMode: .default, options: nil, resultHandler: { (image, info) in
cell.imageView.image = image
})
正如您所看到的,按照Apple文档,我在两个地方都使用与targetSize,contentMode和options完全相同的缓存,因此,我设置图像的回调块应该被调用一次合格ty图像。
然而,如果我重新加载的CollectionView,或甚至在集合视图的第一负载,回叫被调用两次,具有低质量图像和所述第二时间具有高质量图像一次。
我不禁想到这是一个错误,因为我为Photos框架下载了Apple's tutorial code,并且确实如此,即使文档明确指出如果我们为资产发送相同的选项contentMode和targetSize,在获取缓存时只会调用一次。 (即使教程代码首先加载低质量图像,然后再加载高质量图像,无论您重新加载集合多少次)。
任何帮助,因为我是新来AVFoundation编码,并通过这个问题已经被难倒是非常赞赏。
对不起,如果这是一个很长的阅读,但预先感谢任何帮助!
尝试翠鸟框架图像捕捉易于使用,并得到荚按您的SWIFT版本。 –
虽然我只需要使用图库图片,但我不需要下载任何东西 – Kunal