每種語言都由其優(yōu)劣刻伊,出于開發(fā)周期绘趋,性能等多方面考慮橄务,混編已經(jīng)成為開發(fā)中的一種大趨勢幔托。
第一種:比較常見的就是使用OC中自帶的UIWebView類穴亏,來實現(xiàn)加載H5網(wǎng)頁界面蜂挪。
第二種:WebViewJavascriptBridge開源庫使用重挑,然后注入相應的JS。
第三種:reactiveNative棠涮,是facebook2015年開放的一個開源框架谬哀。
第四種:iOS7之后出了JavaScriptCore.framework用于與JS交互,但是不支持iOS6严肪,暫時先將demo鏈接放到這里 JavaScriptCoreDemo戳這里下載
一.iOS native與H5交互
創(chuàng)建webView史煎,遵循代理并實現(xiàn)其方法:
1.--webViewDidStartLoad
在該方法中可以讓“小菊花”即UIActivityIndicatorView開轉(zhuǎn)
2.--webViewDidFinishLoad
小菊花停止轉(zhuǎn)動,并從界面中移除
3.--webViewDidFailLoadWithError
做相關(guān)操作驳糯,打印錯誤原因篇梭,重載等
效果如下:
核心代碼很簡單,本次測試使用的是百度酝枢,且所有設置都寫在了懶加載里面恬偷。
-(UIWebView *)webView {
if (!_webView) {
_webView = [[UIWebView alloc]initWithFrame:[UIScreen mainScreen].bounds];
_webView.delegate = self;
//適應屏幕
_webView.scalesPageToFit = YES;
//解決iOS9.2以上黑邊問題
_webView.opaque = NO;
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.baidu.com"]]];
NSLog(@"test");
//關(guān)閉多點觸控
_webView.multipleTouchEnabled = YES;
//加載網(wǎng)頁中的電話號碼,單擊可以撥打
_webView.dataDetectorTypes = YES;
}
return _webView;
}
第四種交互方式不作考慮帘睦,剩下的兩種交互方式正在研究袍患,后續(xù)更新。