Ответ 1
Обновлено для Swift 4, Xcode 9.3
Этот метод позволяет WKWebView правильно читать иерархию каталогов и подкаталогов для связанных CSS, JS и большинства других файлов. Вам НЕ нужно менять код HTML, CSS или JS.
Решение (Быстрое)
- Добавьте веб-папку в ваш проект (Файл> Добавить файлы в проект)
- Копировать элементы, если это необходимо
- Создать ссылки на папки *
- Добавить к целям (которые применимы)
Добавьте следующий код в
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)
Решение (углубленное)
Шаг 1
Импортируйте папку локальных веб файлов в любое место вашего проекта. Убедитесь, что вы:
☑️ Копировать элементы, если необходимо
☑️ Create folder references (not "Create groups")
☑️ Добавить к целям
Шаг 2
Перейдите в View Controller с помощью 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
- имя вашей веб-папки (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)
}
}
Если у кого-то из вас возникнут дополнительные вопросы об этом методе или коде, я постараюсь ответить!