UIWebView提供了3種加載頁面的方式:
- (void)loadRequest:(NSURLRequest *)request;
- (void)loaDHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;
這里我只講前兩種,最后一種應(yīng)該不常用。
- (void)loadRequest:(NSURLRequest *)request
這個(gè)方法常用于加載指定url的網(wǎng)頁,但其實(shí)它也能用來加載本地資源,而且很方便。
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"Htmls"];
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]];
這 樣就把Htmls/index.html加載到webview里了。需要注意的是,Htmls這個(gè)文件夾是 以”create folder references for any added folders“方式引入的,而非默認(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 *)string baseURL:(NSURL *)baseURL
這個(gè)方法用于直接加載html代碼。如果html沒有存在文件中,推薦使用這種方法。當(dāng)然你也可以用這個(gè)方法從本地html讀取代碼,然后加載。但此時(shí)請(qǐng)注意baseURL要傳對(duì),否則html中引用的資源是找不到的。
繼續(xù)用上面的例子,要正確加載資源,你得這么寫:
NSString *baseURL = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Htmls"];
[self.webView loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:baseURL]];
這樣,前端工程師就可以很習(xí)慣的跟你配合開發(fā)了~
|
新聞熱點(diǎn)
疑難解答
圖片精選