基於WebView的混合編程

近日公司需求變動,之前一個頁面是後臺返回HTML字段,而後咱們直接用webView接收,如今新增一個頁面,數據後臺返回非HTML,頁面跟前面一直,所幸本身會點HTML,因此偷了個懶,本身用代碼把數據組裝成了一個THML,直接調用之前的UI,節省了一些工做,可是,這個組裝HTML的過程卻不是那麼簡單,因此網上搜索了一寫資料,能夠簡化這部分工做。html

1、模板引擎渲染HTML

1.GRMustache模板引擎渲染HTML

  a.建立模板文件以下:web

  <HTML>lua

    <HEAD> </HEAD>代理

    <BODY>htm

      <h1>{{name}}</h1>模板引擎

      <p>{{content}}</p>ip

    </BODY>字符串

  </HTML>string

這只是一個最簡單的模板,你能夠在這個文件中加入各類HTML元素標籤等,{{參數名}}代替後面傳進來的參數,這個參數名必須與後面穿參的字典中保持一致it

2.代碼中讀取這個模板文件

NSString *template = [NSString stringWithCntentsOfFile:.....]

3.使用GRMustache的renderObject方法生成渲染後的HTML文件

NSDictionary *valueDic = @{@"name":@"標題", @"content":@"內容:HTML渲染模板"};

注意:此處字典的key值與上面的模板中的參數對應

NSString *htmlstr = [GRMustacheTemplate renderObject:valueDic fromeString:template error:nil];

4.這時候就能夠直接用webView接收這個渲染後的HTML字符串了

2、OC與JS語言相互調用

1.OC語言調用JS語言

經過UIWebView的stringByEvaluatingJavaScriptFromString方法能夠實現,該方法能夠向UIWebView傳入一段須要執行的JS代碼,而後得到執行結果

2.JS調用OC語言

並無原生的API,咱們知道webView的代理方法中shouldStartLoadWithRequest會捕獲webView跳轉下一個頁面,咱們可讓H5在頁面點擊某個按鈕的時候,發出一個大家定義規範的一個URL經過代理捕獲解析(eg:  test://goToPage?pageID=1),從而本身定義跳轉原生頁面,或者其餘操做。

相關文章
相關標籤/搜索