2011-04-12 2 views
9

UIWebView가 있는데 SVG 이미지를로드하려고합니다. 파일의 내용은 순수 SVG 즉 <svg>...</svg>입니다. loadRequest를 사용하여있는 UIWebView에서 또한 정상 및 모바일 사파리, 그리고에 미세한 파일로드 : 수행하여 다음과 같은 :UIWebView 메서드의 차이점 loadHTMLString : 및 loadRequest

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

을하지만, 내가 문자열로 파일의 내용을로드하고, HTML을로드하려고하면 문자열을 웹보기에 입력하면 아무 것도 표시되지 않습니다.

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

위의 두 가지 기술 간에는 어떤 이유가 있습니까? 그들은 같은 결과를주지 않아야합니까? 파일이 순수한 ASCII이므로 인코딩 문제가 있다고 생각하지 않습니다.

필자는 파일을 사용하여 지금 당장 필요한 작업을 수행 할 수 있다고 생각하지만 영구적이지 않은 데이터를 위해 파일 시스템을 사용하는 것을 싫어합니다.

도움을 주시면 대단히 감사하겠습니다 !!!

감사합니다, 론

+0

내 "html"이 실제로 html이 아니겠습니까? 내 파일은 ' ...'으로 시작하고 끝납니다. loadHTMLString이 텍스트를 HTML로해야하는 반면 요청을로드하면 비 HTML 파일을 처리 할 수 ​​있습니까? – Ron

답변

9

대신 loadData:MIMEType:textEncodingName:baseURL:를 사용할 필요가이 문제를 해결하는 데 도움이됩니다.

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

이것은 완벽하게 작동했습니다. 도움을 많이 주셔서 감사합니다! 대단히 감사합니다 !!! – Ron

+0

xhtml + xml이 엄격하기 때문에 MIMEType "text/html"을 사용했으며 html이 완벽하지 않으면 렌더링 오류가 발생합니다 (즉, 모든 태그를 제대로 닫아야 함) – Larry

0

나는 이것에 대해 확실하지 오전하지만 baseURL가 전무로 설정되어있는 경우, 나는 웹보기는 내용을로드하는 곳에서 모르는 것 같아요.

희망이 SO 질문은 유 Link to resources inside WebView - iPhone

+0

정보를 제공해 주셔서 감사합니다! 내 경우에는 HTML이 완전히 자체 포함되어 있기 때문에 문제의 원인이라고 생각하지 않습니다. – Ron