显示来自Server的UIImageView的图像

时间:2013-05-15 10:12:12

标签: iphone ios ios6 uiimageview nsdata

我得到了一个奇怪的问题,如果得到任何人的帮助,那么我们将不胜感激。

我的问题是我只通过ex: abc.png的网络服务从服务器获取图像名称。

现在该图片需要附加静态网址&而不是用于显示UIImageView

我使用过这段代码:

for (int i = 0; i<[[myDic valueForKey:@"posts"] count]; i++)
{
    NSData *bgImageData = nil;
    if ([[[[myDic valueForKey:@"posts"] objectAtIndex:i] valueForKey:@"post"] valueForKey:@"video_image"] == [NSNull null])
    {
        bgImageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://drupal.org/files/issues/no-pre.png"]];
    }
    else
    {
        bgImageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://sitebildz.com/application/document/video/%@",[[[[myDic valueForKey:@"posts"] objectAtIndex:i] valueForKey:@"post"] valueForKey:@"video_image"]]]];
    }
    [arrVideoImage addObject:bgImageData];
}

表格中的显示:

cell.imageView.image = [UIImage imageWithData:[arrVideoImage objectAtIndex:indexPath.row]];

但不知道为什么它不起作用。

感谢。

3 个答案:

答案 0 :(得分:2)

作为The Tiger的评论,您最好的选择是使用像SDWebImage这样的外部库,它可以处理在线图像的下载,缓存和显示。 以下是使用此框架的示例:

[imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
               placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

图像加载后,您还可以使用块来插入逻辑:

[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
           placeholderImage:[UIImage imageNamed:@"placeholder.png"]
                  completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {... completion code here ...}];

答案 1 :(得分:1)

你做错了。看到你正在循环中NSData。你认为它会等到从服务器上下载图像吗?不,它不会等待。因此,在这种情况下,您要添加空NSData

最好使用SDWebImage
 1.下载
 2.将其导入项目中  3.建设项目(成功)
 4.在#import "UIImageView+WebCache.h"班级

中导入ViewController
[cell.imageView setImageWithURL:imageURL placeholderImage:[UIImage imageNamed:@"placeHolderImageName"]];

答案 2 :(得分:1)

您驾驶室使用https://github.com/enormego/EGOImageLoading/tree/master/EGOImageView,它将以异步方式从服务器下载图像,并在从服务器完全下载后显示。它还缓存该图像,以便可以避免多个请求,并增强系统。