Используйте локальный файл CSS в UIWebView - PullRequest
1 голос
/ 22 февраля 2012

Я искал в Интернете и попробовал это несколько способов сейчас, но у меня есть CSS-файл в моем проекте XCode и UIWebView, в котором html записан в его контроллере.

Мне нужно, чтобы WebView распознал файл CSS и использовал его, когда представление показывается пользователю.Я не могу зависеть от приложения, имеющего доступ к Интернету, поэтому я попробовал все методы, которые я видел, которые не зависят от него.Вот что у меня пока и не работает:

style.css находится во вспомогательных файлах

NSString *html = @"<html><head><link rel=\"stylesheet\" type=\"text/css\"             
    href=\"style.css\" ><title>Words</title><link rel=\"stylesheet\" type=\"text/css\"   
    href=\"style.css\" /></head><body><table cellpadding=\"0\" cellspacing=\"0\" 
    border=\"0\"
    width=\"100%\" class=\"resource-table\"><tr><th width=\"20%\">Reference/Performance  
    Level</th><th width=\"20%\">Words</th><th width=\"20%\">Words</th><th
    width=\"20%\">Words</th><th width=\"20%\">Highly Effective</th></tr><tr><td><p
    class=\"bold\">Words</p><p>Words</p></td><td><ul class=\"normal\"><li>Words</li></ul>
    </td><td><ul class=\"normal\"><li>Words</li></ul></td><td><ul class=\"normal\">
    <li>Words</li></ul></td><td><ul class=\"normal\"><li>Words</li></ul></td></tr><tr><td>
    <p class=\"bold\">Domain 4f P. 107</p><p>4-Decision Making</p></td><td><ul
    class=\"normal\"><li>Words</li></ul></td><td><ul class=\"normal\"><li>Words</li></ul>
    </td><td><ul class=\"normal\"><li>Words</li></ul></td><t<ul class=\"normal\">
    <li>Words</li></ul></td></tr><tr><td><p class=\"bold\">Words</p></td><td></td><td> 
    </td><td></td><td><ul class=\"normal\"><liWords</li><li>Words</li></ul></td></tr>
    </table></body></style></html>";   

NSString *path = [[NSBundle mainBundle] bundlePath];

NSURL *baseURL = [NSURL fileURLWithPath:path];    

[webView loadHTMLString:html baseURL:baseURL];

Ответы [ 3 ]

1 голос
/ 22 февраля 2012

Должен включать относительный путь для файлов в ссылках на папки

Ваш файл css находится в корне приложения? Если так, я не знаю, почему ваш код не работает. Я предполагаю, что ваш файл css находится внутри «ссылки на папку» (синяя папка), и в этом случае вы также должны включить путь к папке в baseURL (или изменить html на href=\"someFolder/style.css\").

Обратите внимание, что ресурсы (изображения и т. Д.) Внутри групп папок будут скомпилированы в одну и ту же папку при компиляции приложения, но ссылки на папки сохраняют иерархию папок.

Двойная проверка местоположения файла

  1. Найдите ваше приложение (файл MyCoolProj.app). Вы можете сделать это из XCode, развернув «Продукты». Под этим должен быть ваш .app файл. Если вы откроете контекстное меню для этого файла, вы сможете "Показать в Finder".
  2. Теперь, когда вы нашли свой файл .app в Finder, выберите его и снова вызовите контекстное меню. Теперь выберите «Показать содержимое пакета».
  3. Теперь вы должны увидеть все файлы в вашем приложении. Найдите, где находится ваш файл CSS. Если он находится внутри папки, то он определенно находится в ссылке на папку в вашем проекте, и для ссылки на него вы ДОЛЖНЫ указать относительный путь к папке, который вы прошли, чтобы добраться до него.

Примечание: Вы также должны заметить, что все изображения и другие ресурсы, которые были в группах папок (не ссылки на папки), существуют в одной и той же папке в корне файла .app. У них больше нет иерархии папок. Вот почему вы можете найти изображения только с их именем, используя [UIImage imageNamed:], например: [UIImage imageNamed:@"someImageName.png"]. Если бы они существовали в ссылке на папку, вам снова пришлось бы включить этот путь.

0 голосов
/ 22 февраля 2012

Также вы можете создать html-файл и загрузить его в UIWebview внутри приложения, примерно так:

NSString *resources = [[NSBundle mainBundle] resourcePath]; 
NSString *filePath = [resources stringByAppendingPathComponent:@"infotext.html"];

NSError *error = nil;
NSString * resourceFileContent = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];

if (error != nil) {
    @throw [NSException exceptionWithName:[error domain] reason:[error localizedDescription] userInfo:[error userInfo]];
}

NSURL *baseURL = [NSURL fileURLWithPath:resources];
[self.mWebView loadHTMLString:resourceFileContent baseURL:baseURL];
0 голосов
/ 22 февраля 2012

Вы можете реализовать стиль непосредственно в HTML-коде с помощью тега стиля вместо отдельного файла.

Надеюсь, это тебе поможет !!

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