2015-09-23 4 views
0

Я пытаюсь получить эскизы с моего PHCachingImageManager, чтобы я мог поместить их во встроенный imageView в моих UITableViewCell.Получение фиксированного размера Изображение от PHCachingImageManager

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 х 80 (40 х 40 сетчатки глаза) из бревен:

размер эскиза: {80, 80}

и Я установите contentMode на PHImageContentModeAspectFill, но когда я вернусь к изображениям, они все разные размеры, и это делает UITableView очень хаотичным.

Как я могу сделать PHCachingImageManager вернувшим изображение нужного размера?

ответ

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) {