UIWebView ссылка на локальные файлы без установки baseURL в каталог приложения - PullRequest
6 голосов
/ 05 ноября 2011

У меня есть веб-представление в приложении, загружающее HTML-фрагмент с сервера, который включает текст и изображения. Я обертываю это в небольшой html и помещаю его в веб-представление следующим образом:

NSString *cssPath = [[NSBundle mainBundle] pathForResource:@"style" ofType:@"css"];

NSString *cssLink = [NSString stringWithFormat:@"<link href='file://%@/' type='text/css' rel='stylesheet'/>", cssPath];

NSString *html = [[NSString stringWithFormat:@"<html><head><title></title><meta charset='UTF-8' />%@</head><body>%@</body></html>", cssLink, htmlContent] retain];

[myWebView loadHTMLString:html baseURL:currentURL];

Есть ли способ исправить приведенный выше код, чтобы ссылка на локальную таблицу стилей работала?

Я могу загрузить таблицу стилей без проблем, если я изменю базовый URL-адрес на файл ресурсов локального приложения, но это нарушит ссылки на изображения в HTML-файле, загруженном с сервера.

Я мог бы также включить содержимое таблицы стилей непосредственно в html, но предпочел бы не делать этого по ряду причин.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 17 августа 2012

Наверное, слишком поздно, чтобы помочь тебе, Энтони. Сожалею! Вот рабочее решение для любых других смелых героев, идущих по тому же пути:

NSString* bundlePath = [[[NSBundle mainBundle] bundleURL] absoluteString];

NSString* cssString = [NSString stringWithFormat:@"<html><head><base href='%@'><link rel='stylesheet' type='text/css' href='style.css'/></head><body>Hi Mom!</body></html>"
                      , bundlePath"];
2 голосов
/ 06 ноября 2011

Что такое currentURL?Это должно быть [[NSBundle mainBundle] bundleURL], например

[webview loadHTMLString:html baseURL:[[NSBundle mainBundle] bundleURL]];

И я считаю, что cssPath может быть просто именем файла, а не абсолютным путем.

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