我已经在网上搜索并尝试了几种方法,但我的 XCode 项目中有一个 CSS 文件和一个 UIWebView,它的 Controller 中写入了 html。
我需要让 WebView 识别 CSS 文件并在向用户显示 View 时使用它。我不能依赖于可以访问互联网的应用程序,所以我已经尝试了我所见过的所有不依赖于它的方法。以下是我目前所拥有的,但它不起作用:
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];
最佳答案
必须在文件夹引用中包含文件的相对路径
您的 css 文件是否位于应用程序的根目录?如果是这样,我不知道为什么您的代码不起作用。我的猜测是您的 css 文件存在于 “文件夹引用”(蓝色文件夹)中,在这种情况下,您还必须在 baseURL 中包含文件夹路径(或将 html 更改为 href=\"someFolder/style.css\"
).
请注意,当您编译您的应用程序时,文件夹组内的资源(图像等...)将被扁平化到同一个文件夹中,但文件夹引用会保持其文件夹层次结构。
仔细检查文件位置
- 找到您的应用程序(MyCoolProj.app 文件)。您可以通过展开“产品”从 XCode 执行此操作。在此之下应该是您的 .app 文件。如果您打开此文件的上下文菜单,您应该能够“在 Finder 中显示”。
- 现在您已经在 Finder 中找到了您的 .app 文件,选择它并再次调出上下文菜单。现在选择“显示包内容”。
- 您现在应该可以看到应用中的所有文件。找到您的 css 文件所在的位置。如果它在一个文件夹中,那么它肯定在您项目的文件夹引用中,并且要引用它,您必须包括您为到达它而遍历的相对文件夹路径。
旁注:您还应该注意到文件夹组(不是文件夹引用)中的所有图像和其他资源都存在于 .app 文件根目录下的同一文件夹中。他们不再没有文件夹层次结构。这就是为什么您可以使用 [UIImage imageNamed:]
查找只有名称的图像,例如:[UIImage imageNamed:@"someImageName.png"]
。如果它们存在于文件夹引用中,则您必须再次包含该路径。
关于iphone - 在 UIWebView 中使用本地 CSS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9385708/