0

如何在 uitableview ios6.1 中加载图像。

我目前正在使用 SDWebImage https://github.com/rs/SDWebImage并且它可以工作。但有时它不会加载图像。

有没有比我正在使用的库更好的库?我是 ios 的初学者,它对我有很大帮助。

提前致谢。

这是我现在使用的代码:

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                       reuseIdentifier:MyIdentifier] autorelease];
    }

    // Here we use the new provided setImageWithURL: method to load the web image
    [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
                   placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

    cell.textLabel.text = @"My Text";
    return cell;
}
4

1 回答 1

1

我将其放入答案中,因为评论太长了:

SDWebImage 包在缓存方面非常强大 - 尤其是磁盘缓存,这在 iOS 中可能有点麻烦(不同的操作系统版本支持不同级别/类型的缓存)。SDWebImage 还提供了很多很好的功能——你可以在他们的 GitHub 页面上看到要点(它是顶部的项目符号列表)。

如果它只是你所追求的 UIImageView 类别(它提供了setImageWithURL:placeholderImage:方法),那么一些人(我想说'大多数',但我不能用数据/统计数据备份它)人们使用 AFNetworking,因为他们更有可能'已经在使用它作为他们的网络堆栈。我们的生产应用程序使用 AFNetworking + SDWebImage,因为我们需要广泛的 AFNetworking 功能,还需要磁盘缓存。

哦,关于未下载的图像 - 可能是网络问题。您没有收到错误并且应用程序没有崩溃的事实几乎是 SDWebImage 添加的功能的重点。实现类似的方法需要处理错误情况(网络错误、未经授权和错误的 URL),并且在不阻塞主线程的情况下更新 UIImageView,所有这些都可能非常复杂,不仅对于初学者,对于中级程序员也是如此. 该功能看起来很简单——下载图像,使用占位符,并在图像到达时更新——但这绝对是一项不平凡的任务。

于 2013-03-26T20:38:40.857 回答