我在tableview中加载数据,每行都有一个500x300px的简单图片,调整大小为单元格。
可以调整图像大小吗?
tableview.m
NSString *filePath = [[NSBundle mainBundle] pathForResource:receip.image ofType:@"jpg"];
UIImage *image = [UIImage imageWithContentsOfFile:filePath];
cell.imageView.image = image;
答案 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
如果您的应用包中已有图片,我建议您制作一个拇指版本并将其添加到您的捆绑包中。为了更好的表现。