【问题标题】:Show very big size images to the tableview cell向 tableview 单元格显示非常大尺寸的图像
【发布时间】:2016-01-26 11:50:42
【问题描述】:

我想在uitableviewDocument 目录中显示用户保存的一些图像。我使用下面的简单代码:

    - (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。我将在每个单元格加载一张图像。我使用的这段代码是否会导致内存泄漏或类似情况?

【问题讨论】:

  • 您可以参考this link。尝试调整图像大小
  • 必须 必须 必须调整图片大小...

标签: ios objective-c uitableview memory-leaks out-of-memory


【解决方案1】:

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

第一个链接:Resize Image

第二个链接:Image Resizing Techniques

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      • 2019-11-29
      • 2020-01-28
      • 2017-04-23
      • 2018-02-04
      相关资源
      最近更新 更多