如何将图像下载到背景线程以平滑UI?

时间:2011-09-13 18:44:07

标签: iphone objective-c multithreading cocoa-touch

我有这种方法,我被建议在后台线程上下载图像。任何人都可以帮我这个吗?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    NSURL *myURL=[NSURL URLWithString:[self.picturesArray objectAtIndex:indexPath.row]]; 
    NSData *myData1 = [[NSData alloc] initWithContentsOfURL:myURL];
    UIImage *myImage = [[UIImage alloc] initWithData:myData1]; 

    cell.imageView.image = myImage;

    return cell;
}

2 个答案:

答案 0 :(得分:0)

撇开所显示的代码本身无法正常工作的事实......你想要做的事情非常简单。您的单元格可以是自定义UITableCell,您可以在其中定义在后台下载的方法。在cellForRowAtIndexPath:中,您将调用该方法,例如[cell loadImageInBackground:myURL]。聪明的部分是,单元格当然知道它中的内容,即你想要设置的UIImageView。因此,后台加载完成后,只需设置图像,您的表格就会保持响应状态。

答案 1 :(得分:0)

您可以使用异步下载的UIImageView。检查一下: http://iphone-dev-tips.alterplay.com/2009/10/asynchronous-uiimage.html

您应该创建一个UITableViewCell子类并向其添加AsynchronousImageView,然后执行[cell.asyncImageView loadImageFromURLString:[self.picturesArray objectAtIndex:indexPath.row]]。