2012-01-28 80 views
0

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

是否可以调整图像大小?

tableview.m

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

回答

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方法中,否则你的表滚动性能会变得恶魔般。

0

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

如果您的应用程序包中已包含图像,建议您制作一个缩略图并添加它到你的包。为了更好的表现o'course。

+0

在我的代码示例中,视网膜显示已由UIGraphicsBeginImageContextWithOptions的第三个参数照顾。通过传递0.0作为比例,上下文将在iPhone 3GS上以1.0的比例创建,在iPhone 4及更高版本上以2.0的比例创建 - 您不必手动乘上图像大小。 – 2012-01-29 09:55:33

+0

关于在包中调整图像大小的好处 - 如果它们随应用一起提供,您应该只需预先生成缩略图。 – 2012-01-29 09:56:56