iOS webview 如何嵌入CSS?

我是这么写的:

NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath: path]]];

在 index.html里,我是这么写的:

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <script type="text/javascript" charset="utf-8" src="showdown.js"></script>        
        <style type="text/css">
            @import url("Github.css");
        </style>
    </head>
    <body>
    </body>
</html>

但是显示出来的却是没有效果的(css未执行), 怎么解决这个问题呢?

2 个回答

把CSS也加到工程里面,然后:

[webView loadHTMLString:html baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]];
这样baseURL就指向了程序的资源路径,这样Html代码就和css是一个路径的。当然baseURL也可以写一个网络路径,这样就可以用网络上的CSS了。

Javascript也是一样的道理,但是要注意,.js文件默认会被当作代码,所以把js文件加入工程后,需要到XCode左栏的资源树,找到Targerts->(你的程序名字)->Compile Sources那里,找到新加入的js文件,把它们拖到Targerts->(你的程序名字)->Copy Bundle Resources里面去,就可以了。

加入文件到项目的时候有两个选项,一个叫做“Recursively create groups for any added folders”一个叫做“Create Folder References for any added folders”。我们一般用前者,这样所有加进来的文件都在资源目录的根目录。如果你需要你的JS或者CSS有目录结构,不跟HTML在一起,而是有相对路径关系的话,你可以用第二个选项,加入一个目录进来,目录里面的文件进入资源的时候会保持相对路径关系。

文章:http://mentormate.com/blog/iphone-uiwebview-class-local-css-javascript-resources/
Using iPhone UIWebView Class with local CSS & JavaScript resources
——————————————————来自德问