Какао WebView - Загрузка локальной HTML-страницы - PullRequest
7 голосов
/ 08 октября 2010

Пролистав немного, я все еще не могу понять это. Я добавил страницу HTML и ее каталог с изображениями в группу ресурсов проекта в XCode (скопировал их).

Когда я пытаюсь загрузить WebView с помощью следующего кода, текст отображается нормально, но изображения не загружаются.

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"index.html"];
NSString *htmlContent = [NSString stringWithContentsOfFile:path];
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
[[tempWebView mainFrame] loadHTMLString:htmlContent baseURL:url];

РЕДАКТИРОВАТЬ: Извините за задержку, вот некоторые основные HTML, который не удалось.

<html>
    <body> 
        <img src="images/bg.png"></img> 
    </body>
</html>

И мой отредактированный код выглядит так -

NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:path];
[[webView1 mainFrame] loadRequest:[NSURLRequest requestWithURL:url]];

РЕДАКТИРОВАТЬ2: Просто понял, что это была проблема с путем. Очевидно, <img src = "images/bg.png"> не работает, но если я скопирую bg.png в корневой каталог и скажу <img src = "bg.png">, все работает нормально. Я до сих пор не уверен, где я ошибаюсь.

Ответы [ 4 ]

8 голосов
/ 08 октября 2010

Подумайте над тем, чтобы сделать следующее:

  1. Вместо того, чтобы самостоятельно найти путь к ресурсу и привязать к нему подпуть, попросите пакет указать правильный путь .
  2. Вместо того, чтобы вообще обрабатывать путь, попросите пакет дать вам правильный URL .(Требуется Mac OS X 10.6 или более поздняя версия.)
  3. Вместо того, чтобы вставлять содержимое HTML непосредственно во фрейм, попросить WebView загрузить URL .

Thisсокращает ваш код до двух строк, которые, если код HTML верен, будут работать.

4 голосов
/ 04 июня 2013

Я думаю, что проблема здесь заключается в том, как файлы копируются в каталог ресурсов на этапе сборки. Любые папки, которые показаны как группы в XCode, будут сглажены, когда они скопированы. Если вы добавляете всю структуру папок веб-сайта в свой проект, вы должны выбрать «Создать ссылки на папки для любых добавленных папок» при добавлении структуры.

Пример: У меня есть HTML-файл, который ссылается на изображение в папке с тем же именем. Я добавляю все это в свой проект, выбирая «ссылки на папки»:

Adding the files

В моем проекте файлы будут выглядеть так (обратите внимание на синюю папку):

Project tree

При создании проекта будет сохранена папка с веб-содержимым:

Resources folder in the bundle

Нет необходимости начинать установку базовых URL-адресов или загрузку со строками. Теперь веб-страница может быть успешно загружена следующим образом:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"LocalTestWeb" withExtension:@"html"];
[[self.webView mainFrame] loadRequest:[NSURLRequest requestWithURL:url]];
3 голосов
/ 27 июля 2011

Этот код работает для меня (только проблемы с Canvas):

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"index" 
                                                     ofType:@"html"
                                                inDirectory:@"html_files_folder"];
NSURL* fileURL = [NSURL fileURLWithPath:filePath];
NSURLRequest* request = [NSURLRequest requestWithURL:fileURL];
[[webView mainFrame] loadRequest:request];
1 голос
/ 01 апреля 2013

Вам необходимо получить данные файла изображения в строке base64. И поместите эту строку в тег img, как показано ниже.

<img src="data:image/png;base64,iVBORw0KGgoAAAANS..." />

См. Это для более подробной информации: http://danielmclaren.com/node/90

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...