从PHCachingImageManager获取固定大小的图像

时间:2015-09-23 02:14:02

标签: ios uitableview photokit

我试图从我的PHCachingImageManager获取缩略图,以便我可以将它们放入imageView中的内置UITableViewCell

NSLog(@"thumbnail size: %@", NSStringFromCGSize(AssetGridThumbnailSize));
[self.imageManager
    requestImageForAsset:asset
        targetSize:AssetGridThumbnailSize
       contentMode:PHImageContentModeAspectFill
           options:nil
     resultHandler:^(UIImage *result, NSDictionary *info) {

       NSLog(@"image size: %@", NSStringFromCGSize(result.size));

       // Only update the thumbnail if the cell tag hasn't changed. Otherwise, the cell has been re-used.
       if (cell.tag == currentTag) {
           cell.imageView.contentMode = UIViewContentModeScaleAspectFill;
           cell.imageView.image = result;

       }
}];

我可以从日志中看到AssetGridThumbnailSize = 80 x 80(40 x 40 retina):

  

缩略图尺寸:{80,80}

并且我已将contentMode设置为PHImageContentModeAspectFill,但当我将图片恢复后,它们的大小各不相同,这使得UITableView看起来非常混乱。

如何让PHCachingImageManager给我一张尺寸合适的图片?

1 个答案:

答案 0 :(得分:1)

在发布问题时,我想出了答案,所以我决定继续发帖,希望这会有助于其他人。

targetSize只是一个建议。为了真正控制返回图像的大小,您必须使用PHImageRequestOptions传入resizeMode = PHImageRequestOptionsResizeModeExact对象。

PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.resizeMode = PHImageRequestOptionsResizeModeExact;

[self.imageManager requestImageForAsset:asset
                 targetSize:AssetGridThumbnailSize
                contentMode:PHImageContentModeAspectFill
                    options:options
              resultHandler:^(UIImage *result, NSDictionary *info) {