Updated for Swift 4, Xcode 9.3
此方法允许WKWebView正确读取链接CSS、JS和大多数其他文件的目录和子目录层次 struct .您确实需要更改HTML、CSS或JS代码.
Solution (Quick)
- Add the web folder to your project (File > Add Files to Project)
- 如果需要,复制项目
- 创建文件夹引用*
- 添加到目标(适用的)
将以下代码添加到viewDidLoad
并根据您的需要进行个性化设置:
let url = Bundle.main.url(forResource: "index", withExtension: "html", subdirectory: "website")!
webView.loadFileURL(url, allowingReadAccessTo: url)
let request = URLRequest(url: url)
webView.load(request)
Solution (In-Depth)
第一步
将本地web文件的文件夹导入到项目的任意位置.确保你:
☑️ 如果需要,复制项目
☑️ Create folder references (not "Create groups")
☑️ 增加目标
第二步
使用WKWebView转到视图控制器,并将以下代码添加到viewDidLoad
方法中:
let url = Bundle.main.url(forResource: "index", withExtension: "html", subdirectory: "website")!
webView.loadFileURL(url, allowingReadAccessTo: url)
let request = URLRequest(url: url)
webView.load(request)
index
–要加载的文件名(不带.html
扩展名)
website
–web文件夹的名称(index.html
应位于该目录的根目录下)
结论
整个代码应该如下所示:
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
webView.uiDelegate = self
webView.navigationDelegate = self
let url = Bundle.main.url(forResource: "index", withExtension: "html", subdirectory: "Website")!
webView.loadFileURL(url, allowingReadAccessTo: url)
let request = URLRequest(url: url)
webView.load(request)
}
}
如果你们有任何人对这个方法或代码有进一步的问题,我会尽我所能回答!