当我从URL将UIImage加载到iPhone上的UIImageView时,我遇到了一些问题。当我使用对象的属性生成NSURL(在NSURL的URLWithString方法的参数中使用URL)时,根本不检索图像,但是如果我对相同的URL进行硬编码,则会按预期检索并显示图像。 /> [item valueForKey:@“pictureLocation”];下面的部分似乎是造成问题的原因,因为即使连接了两个硬编码字符串,也会生成NSURl而没有任何问题。
NSString * imagePath = @"http://localhost:3000";
NSString * specificPath = (NSString *)[item valueForKey:@"pictureLocation"] ;
//concatenate the strings to get a fully formed URL
NSString * finalPath = [imagePath stringByAppendingString:specificPath];
UIImage *img = [[UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString:finalPath]]] retain];
基本上,当我NSLog的finalPath并将该URL硬编码到程序中时,我得到了预期的结果。
关于为什么会出现这种情况的任何想法?
感谢。
答案 0 :(得分:0)
NSString
返回的valueForKey:
是如何形成的?它是“image.png”,还是“/image.png”?如果是前者,则您需要使用stringByAppendingPathComponent:
代替stringByAppendingString:
。
答案 1 :(得分:0)
您需要使用UIWebView并在其中加载html <img />
。
至少这是一个很好的解决方法。
检查此处的代码http://blog.timeister.com/2009/07/18/iphone-show-online-image/
- (void)loadImage:(NSString*)url frame:(CGRect)frame {
NSString* textHTML = @"
<html><head>
<style type=\"text/css\">
body {
background-color: transparent;
color: white;
}
</style>
</head><body style=\"margin:0\">
<img src=\"%@\" width=\"%0.0f\" height=\"%0.0f\"></img>
</body></html>";
NSString* html = [NSString stringWithFormat:textHTML, url, frame.size.width, frame.size.height];
if(webView == nil) {
webView = [[UIWebView alloc] initWithFrame:frame];
[self.view addSubview:webView];
}
[webView loadHTMLString:html baseURL:nil];
}
阿德里安
答案 2 :(得分:0)
我认为问题与正确的编码有关。
尝试使用以下函数正确编码参数:
encodedparams = [params stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
所以在你的情况下:
NSString * specificPath = (NSString *)[item valueForKey:@"pictureLocation"] ;
specificPath = [specificPath stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
我认为这可以解决您的问题。