照片框架:UICollectionView滚动抖动

时间:2015-11-05 21:02:49

标签: ios uicollectionview thumbnails smooth-scrolling photosframework

我正在使用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)
   })

如果问题出在上述方法中,有任何想法可以改善滚动性能吗?

任何指针都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

根据Apple文档,

  

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

public void LaunchFont(String fonts) {
    Typeface myTypeface = Typeface.createFromAsset(getActivity().getAssets(), "fonts/" + fonts + ".ttf");
    text_View.setTypeface(myTypeface);
    view.findViewById(R.id.edtextDesigner).setVisibility(View.VISIBLE);
    view.findViewById(R.id.toggleText).setVisibility(View.VISIBLE);
    view.findViewById(R.id.closeFontMenu).setVisibility(View.GONE);
    view.findViewById(R.id.MenuLayout).setVisibility(View.GONE);
}

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