UIWebView 兩種發(fā)起請(qǐng)求的區(qū)別

今天用UIWebView加載本地資源時(shí),遇到了些問題:html中引用的資源不能帶路徑,否則就找不到,然而如果不加路徑的話,會(huì)給前端工程師帶 來麻煩,資源目錄結(jié)構(gòu)會(huì)很混亂。上網(wǎng)查資料,發(fā)現(xiàn)很多人遇到過這個(gè)問題,但沒查到好的解決辦法。研究了一下,找到了辦法,分享給大家。

UIWebView提供了3種加載頁(yè)面的方式:

-(void)loadRequest:(NSURLRequest*)request;

-(void)loadHTMLString:(NSString*)stringbaseURL:(NSURL*)baseURL;

-(void)loadData:(NSData*)dataMIMEType:(NSString*)MIMETypetextEncodingName:(NSString*)textEncodingNamebaseURL:(NSURL*)baseURL;

這里我只講前兩種,最后一種應(yīng)該不常用。

-(void)loadRequest:(NSURLRequest*)request

這個(gè)方法常用于加載指定url的網(wǎng)頁(yè),但其實(shí)它也能用來加載本地資源,而且很方便。

NSString*filePath=[[NSBundlemainBundle]pathForResource:@"index"ofType:@"html"inDirectory:@"Htmls"];

[self.webViewloadRequest:[NSURLRequestrequestWithURL:[NSURLfileURLWithPath:filePath]]];

這 樣就把Htmls/index.html加載到webview里了。需要注意的是,Htmls這個(gè)文件夾是 以”createfolderreferencesforanyaddedfolders“方式引入的,而非默認(rèn)。這樣做有兩個(gè)好處,一是編 譯之后,資源的目錄結(jié)構(gòu)會(huì)和當(dāng)前項(xiàng)目保持一致,而不會(huì)亂七八糟的散落在.app包中,也因此資源文件可以被html輕易找到;二是finder中文件目錄 的改變會(huì)直接映射到項(xiàng)目中,無需在xcode中手動(dòng)增刪文件。

index.html中,前端工程師引用了樣式表

base.css這個(gè)文件的路徑是其實(shí)是xxx.app/Htmls/css/base.css,而不是xxx.app/css/base.css,它可以被找到,原因是loadReqest這種方式會(huì)把當(dāng)前l(fā)oad的這個(gè)html文件的路徑作為baseURL。

-(void)loadHTMLString:(NSString*)stringbaseURL:(NSURL*)baseURL

這個(gè)方法用于直接加載html代碼。如果html沒有存在文件中,推薦使用這種方法。當(dāng)然你也可以用這個(gè)方法從本地html讀取代碼,然后加載。但此時(shí)請(qǐng)注意baseURL要傳對(duì),否則html中引用的資源是找不到的。

繼續(xù)用上面的例子,要正確加載資源,你得這么寫:

NSString*baseURL=[[[NSBundlemainBundle]resourcePath]stringByAppendingPathComponent:@"Htmls"];

[self.webViewloadHTMLString:htmlStringbaseURL:[NSURLfileURLWithPath:baseURL]];

這樣,前端工程師就可以很習(xí)慣的跟你配合開發(fā)了~



摘自:http://blog.sina.com.cn/s/blog_af73e7a701019co0.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS開發(fā)系列--網(wǎng)絡(luò)開發(fā) 概覽 大部分應(yīng)用程序都或多或少會(huì)牽扯到網(wǎng)絡(luò)開發(fā),例如說新浪微博、微信等,這些應(yīng)用本身可...
    lichengjin閱讀 4,039評(píng)論 2 7
  • UIWebView的三種加載方式和其代理API 提供了三種方法:1.- (void)loadRequest:(NS...
    JamesYi閱讀 765評(píng)論 0 0
  • IOS之UIWebView的使用 剛接觸IOS開發(fā)1年多,現(xiàn)在對(duì)于 混合式 移動(dòng)端開發(fā)越來越流行,因?yàn)殚_發(fā)成本上、...
    學(xué)無止境666閱讀 46,009評(píng)論 5 53
  • UIWebView加載本地HTML5文件一.準(zhǔn)備HTML文件及其資源文件使用UIWebView加載本地的HTML文...
    wzf_taker閱讀 1,256評(píng)論 0 3
  • 一、 WebView簡(jiǎn)單介紹 WebView是iOS中比較常用的一個(gè)控件,特別是現(xiàn)在app不好推廣,下載成本高的時(shí)...
    Onegeng閱讀 13,781評(píng)論 1 11

友情鏈接更多精彩內(nèi)容