使用uiwebview中的本地html从相对路径加载资源

使用uiwebview中的本地html从相对路径加载资源

我有一个非常简单的iOS应用程序,带有uiwebview加载一个非常简单的测试页面(test.html):

<html><body><img src="img/myimage.png" /></body></html>

我将此test.html文件加载到我的Web视图中:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"html"];NSString *html = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];NSURL *baseUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];[webView loadHTMLString:html baseURL:baseUrl];

如果我在没有相对路径的情况下引用图像并将引用的图像放在根目录下的根目录下 - >在XCode中复制捆绑资源,这可以正常工作,但我不能让它与我的html文件中显示的相对路径一起工作。必须有一种方法可以做到这一点,我有很多图像,CSS,javascript文件,我想加载到webview中,我希望不必拥有根目录中的所有内容,并且必须更改我的网站中的所有引用应用程序。


慕莱坞森
浏览 628回答 3
3回答

长风秋雁

这是如何加载/使用具有相对引用的本地html。将资源拖动到您的xcode项目中(我从我的finder窗口拖动了一个名为www的文件夹),您将获得两个选项“为任何添加的文件夹创建组”和“为任何添加的文件夹创建文件夹引用”。选择“创建文件夹引用..”选项。使用下面给出的代码。它应该像魅力一样工作。NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"www"]];[webview loadRequest:[NSURLRequest requestWithURL:url]];现在,html中的所有相关链接(如img /&nbsp;.gif,js /&nbsp;.js)都应该得到解决。斯威夫特3&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;let&nbsp;path&nbsp;=&nbsp;Bundle.main.path(forResource:&nbsp;"dados",&nbsp;ofType:&nbsp;"html",&nbsp;inDirectory:&nbsp;"root")&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;webView.load(&nbsp;URLRequest(url:&nbsp;URL(fileURLWithPath:&nbsp;path))&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;}

月关宝盒

我只是这样做:&nbsp;&nbsp;&nbsp;&nbsp;UIWebView&nbsp;*webView&nbsp;=&nbsp;[[[UIWebView&nbsp;alloc]&nbsp;init]&nbsp;autorelease]; &nbsp;&nbsp;&nbsp;&nbsp;NSURL&nbsp;*url&nbsp;=&nbsp;[[NSBundle&nbsp;mainBundle]&nbsp;URLForResource:@"index"&nbsp;withExtension:@"html"]; &nbsp;&nbsp;&nbsp;&nbsp;NSURLRequest*&nbsp;request&nbsp;=&nbsp;[NSURLRequest&nbsp;requestWithURL:url]; &nbsp;&nbsp;&nbsp;&nbsp;[webView&nbsp;loadRequest:request];其中“index.html”相对引用图像,CSS,javascript等。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS