一、UIWebView
UIWebView 是 蘋果提供的用來展現網頁的UI控件。它也是最佔內存的控件。css
iOS8.0 webkit框架。 WKWebView,相比UIWebView,節省了1/3~1/4的內存,速度快,可是沒緩存功能。html
iOS開發 Xcode native原生開發 + Html5 -> 混合開發java
Android開發 Eclipse / MyEclipse Android Studiojquery
Html5 javaScript css + div jquery + mobile DreamWare Sublimeweb
iOS 和 HTML5緩存
oc js 之間的交互網絡
oc 調用 js 代碼 stringByEvaluatingJavaScriptFromString框架
js 調用 oc 代碼 蘋果沒提供,是經過代理來完成的。佈局
//後退
[self.webView goBack];lua
//前進
[self.webView goForward];
//刷新
[self.webView reload];
//webView加載本地網頁1
NSURL * htmlURL = [[NSBundle mainBundle] URLForResource:@"index.html" withExtension:nil];
[self.webView loadRequest:[NSURLRequest requestWithURL:htmlURL]];
//webview加載網絡請求
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];
//webView加載本地網頁2
NSString * path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSString * htmlString = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
[self.webView loadHTMLString:htmlString baseURL:nil];
//若是網頁不是響應式佈局,須要調這個方法
self.webView.scalesPageToFit = YES;
//是否響應電話等信息
self.webView.dataDetectorTypes = UIDataDetectorTypeNone;
四、UIWebView 代理方法
/**
* 當用戶點擊網頁某個鏈接,或者是按鈕的時候出發
*
* @param webView
* @param request 網頁上的鏈接請求
* @param navigationType
*
* @return 是否跳轉到該鏈接
*/
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSLog(@"%@",request.URL);
return YES;
}
//網頁開始加載
- (void)webViewDidStartLoad:(UIWebView *)webView {
self.backBtn.enabled = webView.canGoBack;
self.forwardBtn.enabled = webView.canGoForward;
}
//網頁結束加載
- (void)webViewDidFinishLoad:(UIWebView *)webView {
self.backBtn.enabled = webView.canGoBack;
self.forwardBtn.enabled = webView.canGoForward;
//使用JavaScript進行編譯
self.title = [self.webView stringByEvaluatingJavaScriptFromString:@"document.title」];
[self.webView stringByEvaluatingJavaScriptFromString:@"alert('登陸成功')"];
}
//網頁加載失敗- (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error { NSLog(@"%@",error);}