0

如果得到任何人的帮助,我会遇到奇怪的问题,我们将不胜感激。

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

现在该图像需要附加静态 URL & ,而不是用于显示到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]];

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

谢谢。

4

3 回答 3

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 ...}];
于 2013-05-15T10:23:52.763 回答
1

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

使用SDWebImage会更好。
1. 下载
2. 在你的项目中导入
3. 构建项目(成功)
4.#import "UIImageView+WebCache.h"在你的ViewController类中导入

[cell.imageView setImageWithURL:imageURL placeholderImage:[UIImage imageNamed:@"placeHolderImageName"]];
于 2013-05-15T10:24:55.213 回答
1

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

于 2013-05-15T10:28:03.570 回答