我得到了一个奇怪的问题,如果得到任何人的帮助,那么我们将不胜感激。
我的问题是我只通过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]];
但不知道为什么它不起作用。
感谢。
答案 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,它将以异步方式从服务器下载图像,并在从服务器完全下载后显示。它还缓存该图像,以便可以避免多个请求,并增强系统。