我正在使用iOS中的Photos框架为我的应用程序开发一个类似于WhatsApp覆盖的覆盖。为了访问用户的图片库图像资产,我需要使用Photos,不能使用UIImagePickerController。
为了更好地介绍这个框架,我决定首先构建自己的图像选择器,然后从我的图库加载图像并将其放到简单屏幕上的集合视图中。一旦我使用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 for 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和选项的缓存,因此,我设置映像的回调块应该在高质量的映像中调用一次。
但是,如果我重新加载collectionView,甚至在集合视图的第一次加载时,就会调用两次,一次是低质量的映像,第二次是高质量的映像。
我情不自禁地认为这是一个bug,因为我下载了Photos框架的苹果的教程代码,尽管文档明确指出,如果我们为资产发送相同的选项,contentMode和targetSize,则在缓存时只调用一次。(即使是教程代码也会首先加载一个低质量的映像,然后再加载一个高质量的映像,不管您重新加载集合多少次)。
任何帮助将是非常感谢,因为我是新的AVFoundation编码,并已被这个问题困扰。
我很抱歉,如果这是一个非常长的阅读,但感谢提前感谢任何帮助!
发布于 2017-09-19 07:27:30
了解有关PHImageRequestOptions和deliveryMode属性的信息,默认值可能设置为opportunistic
案例机会主义 照片自动提供一个或多个结果,以平衡图像质量和反应能力。
https://stackoverflow.com/questions/39759025
复制相似问题