iphone - 在 UIWebView 中使用本地 CSS 文件

标签 iphone objective-c ios ipad uiwebview

我已经在网上搜索并尝试了几种方法,但我的 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\").

请注意,当您编译您的应用程序时,文件夹组内的资源(图像等...)将被扁平化到同一个文件夹中,但文件夹引用会保持其文件夹层次结构。

仔细检查文件位置

  1. 找到您的应用程序(MyCoolProj.app 文件)。您可以通过展开“产品”从 XCode 执行此操作。在此之下应该是您的 .app 文件。如果您打开此文件的上下文菜单,您应该能够“在 Finder 中显示”。
  2. 现在您已经在 Finder 中找到了您的 .app 文件,选择它并再次调出上下文菜单。现在选择“显示包内容”。
  3. 您现在应该可以看到应用中的所有文件。找到您的 css 文件所在的位置。如果它在一个文件夹中,那么它肯定在您项目的文件夹引用中,并且要引用它,您必须包括您为到达它而遍历的相对文件夹路径。

旁注:您还应该注意到文件夹组(不是文件夹引用)中的所有图像和其他资源都存在于 .app 文件根目录下的同一文件夹中。他们不再没有文件夹层次结构。这就是为什么您可以使用 [UIImage imageNamed:] 查找只有名称的图像,例如:[UIImage imageNamed:@"someImageName.png"]。如果它们存在于文件夹引用中,则您必须再次包含该路径。

关于iphone - 在 UIWebView 中使用本地 CSS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9385708/

相关文章:

iphone - 从 CFHTTPMessageRef 获取原始 HTTP 请求

ios - Objective-C 编译器遗漏了协议(protocol)定义

objective-c - Sin 和 Cos 函数返回不正确的结果

iphone - 强制改变代码方向

iphone - iOS:录制语音编码的音频格式,用于网络传输

iphone - CSS3 字体嵌入在 Iphone OS3.0 safari 中不起作用?

iphone - 在 locationManager = nil 和 stopUpdatingLocation 调用后位置仍在监控

iphone - Xcode - 如何获取 iPhone 11 模拟器进行开发?

ios - Obj-C,如何迭代具有字体属性的 View 的所有 View ?

ios - tableView 实现就像 appStore 上一样