当前位置:  开发笔记 > 编程语言 > 正文

iPhone Dev:UIWebView baseUrl到Documents文件夹中的资源而不是App bundle

如何解决《iPhoneDev:UIWebViewbaseUrl到Documents文件夹中的资源而不是Appbundle》经验,为你挑选了2个好方法。

问候!任何人都可以请我帮忙找到解决方法:

使用loadHTMLString将html加载到UIWebView中,并包含(使用baseURL)资源,例如CSS,来自用户文档目录中文件夹的图像文件- 而不是来自应用程序的MainBundle.

我已经看过如何使用baseURL在应用程序包/ MainBundle中加载的教程,这很简单但不能使用iPhone的Documents目录中的资源.

我的文件夹的结构如下:

dirX 
|---> file.xml 
|---> dirCSS 
      |---> style.css

我可以检索目录X的完整路径(Users /......./ dir X).但是,当将该路径传递给UIWebView的baseURL时

[webView loadHTMLString:fileXMLString baseURL:pathToDirX]

... webView无法识别资源(例如dirCSS中的style.css)作为fileXMLString中的href'


所以目前我的应用程序可以成功加载html字符串但不加载样式表,因为html字符串中CSS的链接是相对的 - 例如.CSS/style.css文件

很感谢任何形式的帮助 :)



1> oonoo..:

经过一些谷歌搜索,我终于找到了一个适合我提出的问题的解决方案.希望这可以帮助那些面临同样问题的人.

诀窍在于为UIWebView的baseURL创建NSURL对象时格式化字符串路径.虽然在大多数情况下我通常使用典型的"Users /...../dir/file",但使用UIWebView的loadHTMLString:baseURL加载需要不同的方法.

如http://dblog.com.au/iphone-development/loading-local-files-into-uiwebview/中所述,我得到了解决方案,资源的字符串路径只需要用双线程替换斜线%20的斜杠和空格:

NSString *imagePath = [[NSBundle mainBundle] resourcePath];
imagePath = [imagePath stringByReplacingOccurrencesOfString:@"/" withString:@"//"];
imagePath = [imagePath stringByReplacingOccurrencesOfString:@" " withString:@"%20"];

NSString *HTMLData = @"

Hello this is a test

"; [webView loadHTMLString:HTMLData baseURL: [NSURL URLWithString: [NSString stringWithFormat:@"file:/%@//",imagePath] ]];

请注意更换琴弦以及:

[NSString stringWithFormat:@"file:/%@//",imagePath]

虽然上面的示例代码是检索应用程序的mainBundle的路径,但它也可以在我的其他文件夹中工作,即Documents(及其子文件夹).

亲切的问候,oonoo

PS再次感谢Nic的回复:)



2> 小智..:

要获取文档目录的路径:

NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask ,YES );
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"index.xml"];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]]

让一切正常运行的最简单方法是从文档目录中加载index.html而不是加载字符串.否则将baseUrl设置为文档目录.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有