在同一UIWebView中使用本地资源和相对链接

时间:2012-06-15 14:25:42

标签: iphone ios uiwebview nsbundle

我遇到了WebView的问题。我正在将Html字符串加载到Web视图中。作为基本URL我需要使用我的网站URL(因为html中有一些相关链接,我无法修改它)。 问题是我还需要使用存储在Application包中的一些图像和css。 所以我使用此代码创建对本地资源的引用(结果字符串在html文件中用作src):

NSString *cssUrl = [NSString stringWithString:@"file:"]; 
cssUrl = [cssUrl stringByAppendingString:[[NSBundle mainBundle] resourcePath]];
cssUrl = [cssUrl stringByAppendingString:@"/story.css"];

然后我还补充说:

cssUrl = [cssUrl stringByReplacingOccurrencesOfString:@"/" withString:@"//"];
cssUrl = [cssUrl stringByReplacingOccurrencesOfString:@" " withString:@"%20"];

知道如何解决问题以及如何创建可在Web视图中使用的文件的引用? 感谢

弗朗西斯

3 个答案:

答案 0 :(得分:0)

首先,导入目录,例如一个名为web的文件,位于所有文件所在的项目中。当Xcode问你时,请确保选择“为任何文件夹创建组引用”。

现在,您可以在将web放入index.html内的文件后加载这样的初始字符串,例如NSString* path = [[NSBundle mainBundle] pathForResource: @"index" ofType:@"html" inDirectory:@"web"]; if (path) [self.webView loadRequest: [NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]];

<img>

现在,您字符串中的所有相关源网址都会按预期工作,包括<a>,{{1}}等。

答案 1 :(得分:0)

这个怎么样?

NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"story" ofType:@"css"];
NSURL *url = [NSURL fileURLWithPath:resourcePath];
NSString *theMagicalURLString = [url absoluteString];

答案 2 :(得分:0)

似乎我试图做的事情是不可能的。要使用捆绑资源,您必须将Web视图的基本URL设置为资源路径。 感谢大家的帮助

弗朗西斯