Переназначить корневой URL UIWebView на [[NSBundle mainBundle] bundleURL] - PullRequest
4 голосов
/ 04 ноября 2010

У меня есть немного HTML и некоторые изображения в моем приложении для iPhone, расположенные примерно так:

html/
    foo.html
images/
    bar.png

Я могу получить bar.png, чтобы появиться в моем UIWebView несколькими способами -либо загрузив foo.html из NSUrl, и пройдя назад по дереву каталогов из каталога html:

<img src="../images/bar.png"/>

, либо загрузив foo.html в строку, используя loadHtmlString и используя [[NSBundle mainBundle] bundleURL] как baseURL:

<img src="images/bar.png"/>

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

Я хотел бы заставить работать это -

<img src="/images/bar.png"/>

- обработка bundleURL как корень "сайта".Есть ли способ заставить это работать, или я обречен на то, чтобы перевести это на file:///images/bar.png и файл не найден?

Ответы [ 2 ]

1 голос
/ 25 января 2012

Единственный способ для вас сделать это - встроить веб-сервер в ваше приложение. Matt Gallagher имеет пост в блоге, с которого вы можете начать. Кроме того, CocoaHTTPServer и Mongoose могут быть добавлены в ваш проект.

0 голосов
/ 12 июня 2012

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

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"bar" ofType:@"png"];
NSURL    *imageURL  = [NSURL fileURLWithPath:imagePath];

Я предполагаю, что у вас есть текстовый / HTML-файл, содержащий шаблон для вашего веб-представления.Вам нужно будет добавить изображение как объект (src="%@"...), а затем добавить imageURL к шаблону:

NSString *path = [[NSString alloc]initWithString:[[NSBundle mainBundle]pathForResource:@"htmlPattern" ofType:@"html"]];
NSError *error;
NSString *pattern = [[NSString alloc]initWithContentsOfFile:path 
                                                   encoding:NSUTF8StringEncoding
                                                      error:&error];


htmlPage = [[NSString  alloc]initWithFormat:pattern,
            imageURL; 
webView = [[UIWebView alloc] initWithFrame:WEBVIEW_FRAME];
[webView loadHTMLString:htmlPage baseURL:[NSURL URLWithString:path]];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:pattern]]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...