使用iPhone sdk从URL加载图像在图像视图中?

Roh*_*wan 2 iphone image objective-c

我尝试通过URL加载图像视图,从网上获取了大量代码.不幸的是,我尝试的解决方案都没有为我工作,我得到了非常奇怪的错误.我正在获取图像数据,但没有来自此NSData的图像.我使用下面的代码和一个示例URL,它可以工作,给我代表的图像.但是,当我将其切换为使用我的实际URL时,我遇到了问题,因为它似乎正在尝试创建/返回一个太大的图像.这是我的代码:

    NSString *urlString = [[[_xmlDictionary objectForKey:@"response"] objectForKey:@"movie"] objectForKey:@"poster"];   

    NSArray *parts = [urlString componentsSeparatedByString:@"\""];
    urlString = [parts objectAtIndex:1];

    urlString = [urlString stringByAppendingFormat:@"/"];
    urlString = [urlString  
        stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    //NSURL * imageURL = [NSURL URLWithString:urlString];
    NSLog(@"URL:%@",urlString);
    NSURL * imageURL = [NSURL URLWithString:urlString];
    NSData * imageData = [[NSData alloc] initWithContentsOfURL:imageURL];
    UIImage * image = [[UIImage alloc] initWithData:imageData];
    m_imageView = [[UIImageView alloc] initWithImage:image];
    m_imageView.frame = CGRectMake(10, 10,300,300);
    [self.view addSubview:m_imageView];
    [imageData release];
    [image release];
Run Code Online (Sandbox Code Playgroud)

我很感激任何帮助,提前谢谢.

Par*_*att 13

您可以将您的响应从您的URL转换为NSData,然后使用

NSURL *url = [NSURL URLWithString:@"<YOUR URL STRING HERE>"];

NSData *data = [[NSData alloc] initWithContentsOfURL:url];

UIImage *tmpImage = [[UIImage alloc] initWithData:data];

yourImageView.image = tmpImage;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

编辑:

另外,为了使它在后台工作,你应该以异步方式使用一个单独的线程调用它,这样它就不会阻塞你的主线程,如下所示.

  [NSThread detachNewThreadSelector:@selector(downloadAndLoadImage) toTarget:self withObject:nil];
Run Code Online (Sandbox Code Playgroud)