2011-04-12 52 views
9

我有一个UIWebView,我想加载一个SVG图像。该文件的内容是纯SVG,即<svg>...</svg>。使用的loadRequest文件加载罚款分为正常和移动Safari浏览器,以及在一个UIWebView:通过执行以下操作:UIWebView方法之间的区别loadHTMLString:和loadRequest

url = [NSURL fileURLWithPath:path]; 
NSURLRequest *req = [NSURLRequest requestWithURL:url]; 
[webView loadRequest:req]; 

但是,如果我的文件的内容加载到一个字符串,并尝试加载HTML字符串进入webview,没有任何显示:

html = [NSString stringWithContentsOfFile:path 
           encoding:NSASCIIStringEncoding 
            error:nil]; 
[webView loadHTMLString:html baseURL:nil]; 

上述两种技术之间有什么原因吗?他们不应该给出相同的结果吗?该文件是纯粹的ASCII,所以我不认为有编码问题。

我想我可以通过使用一个文件来获得我现在需要完成的工作,但是我讨厌使用非持久数据的文件系统。

任何帮助非常感谢!

谢谢你,罗恩

+0

难道问题是我的“html”不是真的html吗?我的文件以' ...'开头和结尾。加载请求是否可能处理非HTML文件,而loadHTMLString要求文本为HTML? – Ron 2011-04-12 19:36:26

回答

9

为了解决这个问题,你必须使用loadData:MIMEType:textEncodingName:baseURL:代替。

NSData *data = [html dataUsingEncoding:NSUTF8StringEncoding]; 
[webView loadData:data MIMEType:@"application/xhtml+xml" textEncodingName:@"utf-8" baseURL:baseUrl]; 
+0

这工作完美。十分感谢你的帮助!非常感谢! – Ron 2011-04-21 17:33:42

+0

我使用MIMEType“text/html”,因为xhtml + xml是严格的,如果html不完美(如所有标签必须正确关闭等),将导致呈现错误。 – Larry 2013-08-08 06:08:01

0

我不知道这个,但如果baseURL设为零,我觉得web视图没有要加载的内容知道了。

希望这太问题可以帮助üLink to resources inside WebView - iPhone

+0

感谢您的信息!然而,就我而言,我不认为这是造成问题的原因,因为HTML是完全独立的。 – Ron 2011-04-12 19:34:37