UIwebview使用bundle / local images加载远程html

时间:2013-04-18 08:32:44

标签: ios uiwebview

嗯,我到处搜索,但我的情况没有任何运气。 我正在使用UIWebView加载我的网页,代码如下:

NSString *fullURL;
fullURL=@"http://domain.com";
NSURL *url=[NSURL URLWithString:fullURL];
NSURLRequest *requestObj=[NSURLRequest requestWithURL:url];
[_webView loadRequest:requestObj];

我想加载远程HTML文件,但是从捆绑资源中加载图像。 HTML文件如下所示:

<img src="http://domain.com/images/image.png" width="20px" height="20px"/>

可以这样做吗?互联网(以及此处)上的大多数帖子都是用本地图像/资源加载本地HTML,这在我的情况下是不同的。

我的代码有什么帮助吗? 感谢

3 个答案:

答案 0 :(得分:1)

使用一些更“松散耦合”的解决方案可能会更好 - 不要以某种hacky方式编辑HTML代码本身(正则表达式,而不是正则表达式......手动更改HTML代码仍然非常hacky)。

事实上,我相信可以做到。 iOS只需要以某种方式通知某些资产可以脱机使用。

基本上,当UIWebView加载页面时,在场景后面发生的第一件事就是下载主* .html页面。然后正在下载所有图形/ css'es / js'es等。

您可以“按原样”下载html文件,但拦截那些要下载图形(+其他资源)并从本地捆绑提供的请求。请参考这篇文章:

http://robnapier.net/blog/offline-uiwebview-nsurlprotocol-588

并应用适当的更改。这里的最大胜利是从webview(以及通过JavaScript调用它的内容加载/维护的代码)的角度来看 - 没有任何改变。只有自定义NSURLProtocol本身知道某些数据是从本地存储加载的。

答案 1 :(得分:1)

有完全相同的问题。对NSURLCache进行子类化以重定向缓存以缓存来自本地存储的图像就像魅力一样。

这是我遵循的文章: http://www.cocoawithlove.com/2010/09/substituting-local-data-for-remote.html

答案 2 :(得分:0)

TL; DR 复杂,尽可能避免,但可能。

如果您仍想这样做:不要对URL本身执行UIWebView :loadRequest,因为它会非常快速地触发下载图像的开始,因此使用Javascript修改图像源可能会发生得太晚。< / p>

你需要做的就是在原生方面下载URL的内容并在那里迭代图像标签来替换源(非常复杂,don't use Regular Expressions to parse HTML btw,有libraries for然后,使用UIWebView loadHTMLString:baseURL:注入修改后的HTML。