2013-08-15 2 views
0

이미지의 종횡비를 변경하지 않고 이미지 갤러리를 생성하고 싶습니다. 이미지의 크기가 다릅니다. UICollectionView을 사용하고 UIImageView을 셀 내부에 배치했습니다. 아래 코드를 사용하여 이미지 크기를 얻습니다. 하지만 항상 크기를 반환 0IOS : 이미지 크기에 따라 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

당신은 항상 가지고 이미지 크기 반환 크기 0 때문에 당신의 UIImageview() ^{} block에서 이미지를 얻을하고 그래서, 당신은 이미지의 크기를 계산해야 mainthread에 실행되지 않습니다 sizeForItemAtIndexPath이 방법 또는

전에,

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

}; 
+0

그것은 작동하지 않습니다, canno을이 같은 시도 할 수 있습니다,하지만 난 그것을 적절한 방법이 아니다 추측 그 블럭 안의 리턴 값. – Volty

+0

'http : // omegadelta.net/2011/05/10/how-to-for-for-ios-methods-with-completion-blocks-to-finish /'를 확인하십시오. –

관련 문제