2011-04-12 78 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