2015-10-27 38 views
0

我想在uitableview中显示用户保存在Document目录中的一些图像。我使用下面简单的代码:向tableview单元显示非常大的图像

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     static NSString *cellIdentifier = @"uploadHistoryCellfa"; 

     BRUploadHistoryCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
     if (!cell) { 
      cell = [[BRUploadHistoryCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
     } 

     //Some Other assignemt to UILables Here... 

     [cell.imagePreview setImage:[UIImage imageWithContentsOfFile:myImagePathInDocument]]; 

     //Some other configurations here .... 

     return cell; 
    } 

我的问题是:

的图像大小约为11-25 MB。我将在每个单元格中加载一个图像。这个我使用的代码可能会导致内存泄漏或者这样的事情吗?

+0

您可以参考[此链接](http://stackoverflow.com/questions/11359383/memory-leak-on-reading-images-from-document-directory)。尝试调整图像大小 – KavyaKavita

+0

您*必须*必须**必须***调整您的图像大小... –

回答

0

11-25 MB实际上是大文件如果你有UITableView你会有更多的5张图像,所以它会变成11-25(* 5),所以你应该调整图像的大小,而将它们添加到tableView,但如果你将调整大小它在显示它的过程中会减慢你的应用程序。因此,您的第一步是保存尺寸最大为1 mb的调整大小的图像。 第二步是生成缩略图,然后在单元格上添加thumbnail图像。

第一个链接:Resize Image

二环线:Image Resizing Techniques

imageIO我的做法是调整图像,因为它使用的CPU和用户不会看到缓慢滚动的问题最快的办法。

在完成所有步骤后,请不要忘记使用foreground threadmain thread来表示单元格上的图像。

0

如果一次只在屏幕上显示1-2个单元格,那么它不会给您带来太多麻烦。 由于TableView将使用新图像更新已经创建的单元格的内容。 (Deque可重用概念

但更好的方法是先调整图像大小然后使用。