uitableviewcell调整图像大小

时间:2012-01-28 15:51:46

标签: iphone objective-c ios uitableview

我在tableview中加载数据,每行都有一个500x300px的简单图片,调整大小为单元格。

可以调整图像大小吗?

tableview.m

NSString *filePath = [[NSBundle mainBundle] pathForResource:receip.image ofType:@"jpg"]; 
UIImage *image = [UIImage imageWithContentsOfFile:filePath]; 
cell.imageView.image = image;

2 个答案:

答案 0 :(得分:1)

我认为你的意思是在将它们放入单元格之前调整大小以提高性能?

您可以使用核心图形执行此操作,如下所示:

//define desired size
CGSize size = CGSizeMake(100.0f, 100.0f);

//create drawing context
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0f);

//draw image at new size
[image drawInRect:CGRectMake(0.0f, 0.0f, size.width, size.height)];

//capture resultant image
UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

请注意,尽管这是一项计算成本高昂的任务。您可能希望提前调整所有图像的大小,可能在后台线程上,并将调整后的版本存储在数组中。你绝对想要在你的cellForRowAtIndexPath方法中粘贴上面的代码,否则你的表滚动性能将是恶魔般的。

答案 1 :(得分:0)

如果这些图像来自外部来源(比如网络)。最好首先缓存原始文件然后(如@Nick Lockwood所解释的)调整它们的大小(请记住视网膜显示需要两倍于高分辨率显示的宽度/高度)。完成该过程后,您可以发送“下载”完成的信号并继续显示UITableView

如果您的应用包中已有图片,我建议您制作一个拇指版本并将其添加到您的捆绑包中。为了更好的表现。