【问题标题】:Lazy loading UITableView with multiple images in each cell在每个单元格中延迟加载具有多个图像的 UITableView
【发布时间】:2013-06-12 10:48:55
【问题描述】:

我正在使用延迟加载在表格视图上显示图像。 但是我需要在每个单元格中创建一个包含多个图像的表格视图。可以滚动。 所有图像仅从服务器加载 如何在没有任何表格滚动滞后的情况下创建它? 有没有这方面的教程

【问题讨论】:

标签: iphone ios uitableview lazy-loading


【解决方案1】:

试试这个代码。 SDWebImage。它从服务器下载图像并将其保存到设备缓存中。 另外,如果您不想将其保存到缓存中,那么您可以查看AFNetworking

【讨论】:

  • AFNetworking 中有一个可用的选项 NSURLCacheStorageNotAllowed。检查一下。
  • 您的回答明确暗示 AFNetworking 不使用缓存。我指出,就签出而言,我已经对其进行了许多调整,以禁用和启用缓存以显示更新的图像等。
【解决方案2】:

还有另一种选择。使用GCD (Grand Central Dispatch)

示例代码:

// Get the filename to load.
    NSString *imageFilename = [imageArray objectAtIndex:[indexPath row]];
    NSString *imagePath = [imageFolder stringByAppendingPathComponent:imageFilename];

    [[cell textLabel] setText:imageFilename];

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);

    dispatch_async(queue, ^{
        UIImage *image = [UIImage imageWithContentsOfFile:imagePath];

        dispatch_sync(dispatch_get_main_queue(), ^{
            [[cell imageView] setImage:image];
            [cell setNeedsLayout];
        });
    });

使用相同的方式显示多张图片。使用它肯定会提高加载tableview的性能。

参考this了解更多关于GCD的信息

【讨论】:

  • @Vidya Vasudev:我的帖子有帮助吗?
  • 优于 SDWebImage。当加载的图像与占位符的纵横比不同时,没有奇怪的适合。 0 依赖。而且我真的不需要缓存,我只需要一个在加载图像时不会锁定应用程序的解决方案。谢谢!
【解决方案3】:

试试这个https://github.com/nicklockwood/AsyncImageView。轻松从服务器异步下载图像。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    相关资源
    最近更新 更多