使用UIWebView与NSBundle中未包含但已下载的图像

时间:2011-08-15 22:40:50

标签: iphone ipad uiwebview

我已经下载了几张图片,我需要查看它们并从UIWebView中打印它们,但我似乎无法获得正确的路径以使图像显示在UIWebView中。

有人成功完成了这项工作吗?

我的图片下载到路径Documents / MyFolder / MyImage.jpg

1 个答案:

答案 0 :(得分:0)

简单:只需将要显示的html复制到文档目录并使用相对文件路径。

我刚试过这个并且它有效。首先将资产复制到用户文档目录中。这里只以一个图像为例。您可以复制整个目录等。

NSURL *documentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *imageURL = [documentsDirectory URLByAppendingPathComponent:@"image.gif"];
if (![[NSFileManager defaultManager] fileExistsAtPath:[imageURL path]]) {
    NSString *bundleImage = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"gif"];
    if (bundleImage) {
        [[NSFileManager defaultManager] copyItemAtPath:bundleImage toPath:[imageURL path] error:nil];
    }
}       

同时复制你的html页面(这只是显示我如何设置测试):

NSString *htmlString = @"<html>Here is a picture: <br>"
"<img src=\"image.gif\" height=100 width=100> "
"</html>";

NSURL *mainPageURL = [documentsDirectory URLByAppendingPathComponent:@"index.html"];
NSLog(@"%@", mainPageURL);
[htmlString writeToURL:mainPageURL atomically:YES encoding:NSUTF8StringEncoding error:nil];

最后加载页面 - 就像魅力一样。

[webView loadRequest:[NSURLRequest requestWithURL:mainPageURL]];

关于在 iOS模拟器中运行此操作的警告。 Mac上的URL不同。简而言之,您必须使用格式@"file:/.../"并将所有斜杠/替换为双斜杠//,并将所有空格替换为%20。有关详情,请参阅this问题。