У меня очень простое приложение для iOS с uiwebview, загружающим очень простую тестовую страницу (test.html):
<html>
<body>
<img src="img/myimage.png" />
</body>
</html>
Я загружаю этот файл test.html в свое веб-представление:
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, которые я хочу загрузить в веб-просмотр, и я бы не хотел, чтобы все было в корне и мне пришлось менять все ссылки в моем веб-сайте. приложение.
@"www/app"
для каталога arg?В Swift:
источник
requestURL
хотя пришлось развернуть .Запихал все в одну строчку (плохо знаю) и никаких проблем с этим не было:
источник
Я просто делаю это:
Где index.html относительно ссылается на изображения, CSS, javascript и т. Д.
источник
Быстрый ответ 2.
Класс UIWebView Справочный советует против использования webView.loadRequest (запроса):
В этом решении html читается в строку. URL-адрес html используется для определения пути и передает его как базовый URL-адрес.
источник
Я вернулся и протестировал и повторно протестировал это, похоже, что единственный способ заставить его работать (поскольку у меня есть некоторые файлы в папке img, а некоторые в js / css и т.д.) - это не использовать относительный путь к моему изображению в html и иметь все ссылки на папку пакета. Какая досада :(.
источник
Ответ @ sdbrain в Swift 3:
источник
В Swift 3.01 с использованием WKWebView:
Это приспосабливается к некоторым более тонким изменениям синтаксиса в 3.01 и сохраняет структуру каталогов на месте, чтобы вы могли встраивать связанные файлы HTML.
источник
let localURL = URL.init(fileURLWithPath: Bundle.main.path(forResource: "index", ofType: "html", inDirectory: "mapa_procesos")!) webView.loadRequest(URLRequest(url: localURL))