IOS:根据图片大小改变UICollectionView Cell大小

Posted

技术标签:

【中文标题】IOS:根据图片大小改变UICollectionView Cell大小【英文标题】:IOS: change UICollectionView Cell size according to the image size 【发布时间】:2013-08-15 09:16:47 【问题描述】:

我想生成一个图片库,而不更改图片的纵横比。图像有不同的尺寸。我正在使用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;   

【问题讨论】:

【参考方案1】:

你总是得到图像大小返回大小 0 因为你的UIImageview () 在^ block 中获取图像并且它没有在mainthread 上执行, 所以,你必须在sizeForItemAtIndexPath这个方法之前计算图像大小或者

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

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

;

【讨论】:

查看http://omegadelta.net/2011/05/10/how-to-wait-for-ios-methods-with-completion-blocks-to-finish/

以上是关于IOS:根据图片大小改变UICollectionView Cell大小的主要内容,如果未能解决你的问题,请参考以下文章

集合视图更改单元格大小

如何在 iOS 中动态更改 UICollectionView 单元格高度

Python PIL调整图片大小尺寸和转换图片格式,removebg改变图片背景透明化处理

iOS开发笔记10-关于UIButton的 setBackgroundImage 和 setImage区别

IOS标签栏图片大小和分辨率

PS改变图片像素大小(一寸照片变二寸)