2013-08-15 7 views
0

Я хочу создать галерею изображений, не изменяя соотношение сторон изображений. Изображения имеют разные размеры. Я использую UICollectionView и позиционирую UIImageView внутри ячейки. Я использую ниже код, чтобы получить размер изображения. но он всегда возвращает размер 0.IOS: изменить UICollectionView Размер ячейки в соответствии с размером изображения

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{ 

NSString* url = [selectedImages objectAtIndex:indexPath.row]; 

UIImageView *thumb; 
ALAssetsLibraryAccessFailureBlock failureBlock = ^(NSError *myError) { 
    NSLog(@"failed loading asset"); 
}; 
ALAssetsLibraryAssetForURLResultBlock resultBlock = ^(ALAsset *myAsset) { 
    [thumb setImage:[UIImage imageWithCGImage:[myAsset aspectRatioThumbnail]]]; 
}; 
ALAssetsLibrary *lib = [[ALAssetsLibrary alloc] init]; 

[lib assetForURL:[NSURL URLWithString:url] resultBlock:resultBlock failureBlock:failureBlock]; 
NSLog(@"%f,%f",thumb.image.size.height,thumb.image.size.width); 
return thumb.image.size; 
} 

ответ

0

Вы всегда есть размер изображения возврата размер , потому что ваш UIImageview() получить изображение в ^{} block и он не исполняется на mainthread, так, вы должны рассчитать размер изображения перед тем sizeForItemAtIndexPath этот метод или

вы можете попробовать, как это, но я предполагаю, что это не правильный путь,

ALAssetsLibraryAssetForURLResultBlock resultBlock = ^(ALAsset *myAsset) { 
    [thumb setImage:[UIImage imageWithCGImage:[myAsset aspectRatioThumbnail]]]; 
return thumb.image.size; 

}; 
+0

он не будет работать, canno t возвращает значение внутри этого блока. – Volty

+0

проверьте этот 'http: // omegadelta.net/2011/05/10/how-to-wait-for-ios-methods-with-completion-blocks-to-finish /' –

Смежные вопросы