2

我同时从网络服务器下载多个图像,我的问题是它们相互混淆。

dispatch_async(dispatch_get_global_queue(0,0), ^{
    NSData * data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"website.com"]];
    if (data == nil)
        return;
    dispatch_async(dispatch_get_main_queue(), ^{
        cell.imageView.image = [UIImage imageWithData:data];
    });
});

我的代码来自:Getting Image from URL Objective C。

我该如何解决??还有什么办法可以加快下载速度?

4

1 回答 1

6

您可以使用“AsyncImageView”类文件,它将同步加载图像并在图像加载时显示活动指示器

AsyncImageView 是一个类文件,它将在其中为每次调用创建连接,当图像数据下载完成时,它将返回 imageview 的图像。如果图像已经在缓存中,则只返回图像而不创建连接。

您可以从以下链接下载“AsyncImageView”类文件:- https://www.dropbox.com/s/peazwjvky9fsjd7/Archive.zip

在 .m 文件中导入 AsyncImageView 类

  #import "AsyncImageView.h" 

在 indexpath 方法的 tableview 单元格中

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     static NSString *CellIdentifier = @"SimpleTableCell";
     UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

     UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(X, y, width, height)];

     NSString *imageURL = [NSString stringWithFormat: @"www.xyz.image.png"];
     AsyncImageView *async = [[AsyncImageView alloc]initWithFrame:CGRectMake(0, 0, width, height)];
    [async loadImageFromURL:[NSURL URLWithString:imageURL]];
    [imageView addSubview:async];
    [cell addSubview:imageView];
    return cell;
}

试试这个你的问题会解决的。

于 2013-03-13T04:27:37.533 回答