0

我想生成一个图像库,而不改变图像的纵横比。图像有不同的尺寸。我正在使用UICollectionView和定位UIImageView单元格内部。我使用下面的代码来获取图像大小。但它总是返回大小 0。

- (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;   
}
4

1 回答 1

0

您总是得到图像大小返回大小0,因为您的UIImageview() 获取图像^{} block并且它没有在 上执行 mainthread,因此,您必须在此方法之前计算图像大小sizeForItemAtIndexPath

你可以这样尝试,但我想这不是正确的方法,

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

};
于 2013-08-15T09:43:54.380 回答