Load resources from relative path using local html in uiwebview(在 uiwebview 中使用本地 html 从相对路径加载资源)
问题描述
我有一个非常简单的 iOS 应用程序,带有一个加载一个非常简单的测试页面 (test.html) 的 uiwebview:
I have a very simple iOS app with a uiwebview loading a very simple test page (test.html):
<html>
<body>
<img src="img/myimage.png" />
</body>
</html>
我将此 test.html 文件加载到我的网络视图中:
I load this test.html file into my web view:
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];
如果我在没有相对路径的情况下引用图像并将引用的图像放在根路径下 Targets -> Copy Bundle Resources 在 XCode 下,这可以正常工作,但是我无法使用相对路径,如图所示我的 html 文件.必须有办法做到这一点,我有很多图像、css、javascript 文件要加载到 web 视图中,我不想将所有内容都放在根目录中,并且必须更改我的 web 中的所有引用应用程序.
This works fine if I reference the image without the relative path and put the referenced image in the root path under Targets -> Copy Bundle Resources within XCode, however I can't get it to work with the relative path as shown in my html file. There must be a way to do this, I have lots of images, css, javascript files that I want to load into the webview and I would like not to have to have everything in the root and have to change all the references in my web app.
推荐答案
这是如何加载/使用具有相对引用的本地 html.
This is how to load/use a local html with relative references.
- 将资源拖到您的 xcode 项目中(我从 finder 窗口中拖了一个名为 www 的文件夹),您将获得两个选项为任何添加的文件夹创建组"和为任何添加的文件夹创建文件夹引用".
- 选择创建文件夹引用.."选项.
使用下面给出的代码.它应该像魅力一样发挥作用.
- Drag the resource into your xcode project (I dragged a folder named www from my finder window), you will get two options "create groups for any added folders" and "create folders references for any added folders".
- Select the "create folder references.." option.
Use the below given code. It should work like a charm.
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"www"]];
[webview loadRequest:[NSURLRequest requestWithURL:url]];
现在您在 html 中的所有相关链接(如 img/.gif、js/.js)都应该得到解析.
Now all your relative links(like img/.gif, js/.js) in the html should get resolved.
斯威夫特 3
if let path = Bundle.main.path(forResource: "dados", ofType: "html", inDirectory: "root") {
webView.load( URLRequest(url: URL(fileURLWithPath: path)) )
}
这篇关于在 uiwebview 中使用本地 html 从相对路径加载资源的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在 uiwebview 中使用本地 html 从相对路径加载资源
基础教程推荐
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01