1

我正在使用 Photos 框架并且requestImageForAsset:花费了太多时间,因此它的滚动性能确实很差。

我尝试将PHImageRequestOptions选项设置为:

let options: PHImageRequestOptions = PHImageRequestOptions()
options.deliveryMode = PHImageRequestOptionsDeliveryMode.FastFormat

滚动变得完全平滑(所以我知道这是唯一的原因),但对于FastFormat交付选项,缩略图仍然模糊,resultHandler:只会被调用一次,图像质量会下降。

目前我正在使用以下代码(滚动不良):

    // Size is proper as per scale i.e(ui-width * scale, uiheight * scale)
    self.imageManager?.requestImageForAsset(phAsset,
      targetSize: size,
      contentMode: PHImageContentMode.AspectFill,
         options: nil,
      resultHandler: { (resultImage, info) -> Void in

       // Call completion handler.
       completion(phAsset: phAsset, image: resultImage)
   })

鉴于问题出在上述方法中,任何人都知道如何提高滚动性能?

任何指针将不胜感激。

4

1 回答 1

1

根据 Apple 文档,

如果您需要同时加载许多资产的图像数据,请使用 PHCachingImageManager 类通过加载您预计很快需要的图像来“预热”缓存。例如,当使用照片资产缩略图填充集合视图时,您可以在当前滚动位置之前缓存图像

// Update the assets the PHCachingImageManager is caching.
    [self.imageManager startCachingImagesForAssets:assetsToStartCaching
                                        targetSize:AssetGridThumbnailSize
                                       contentMode:PHImageContentModeAspectFill
                                           options:nil];
    [self.imageManager stopCachingImagesForAssets:assetsToStopCaching
                                       targetSize:AssetGridThumbnailSize
                                      contentMode:PHImageContentModeAspectFill
                                          options:nil];

您可以轻松参考苹果提供的缓存帮助@Sample app https://developer.apple.com/library/ios/samplecode/UsingPhotosFramework/Introduction/Intro.html

于 2015-12-18T06:42:13.260 回答