从 PHCachingImageManager 获取固定大小的图像

Getting fixed size Image from PHCachingImageManager

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

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 视网膜):

thumbnail size: {80, 80}

并且我已将 contentMode 设置为 PHImageContentModeAspectFill,但是当我取回图像时,它们的尺寸各不相同,这使得 UITableView 看起来非常混乱。

如何让 PHCachingImageManager 返回合适尺寸的图片?

在发布问题时,我找到了答案,所以我决定继续发布,希望这对其他人有所帮助。

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

传入 PHImageRequestOptions 对象
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.resizeMode = PHImageRequestOptionsResizeModeExact;

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