基于WebView的混合编程

近日公司需求变更,以前一个页面是后台返回HTML字段,然后我们直接用webView接收,现在新增一个页面,数据后台返回非HTML,页面跟前面一直,所幸自己会点HTML,所以偷了个懒,自己用代码把数据组装成了一个THML,直接调用以前的UI,节省了一些工作,但是,这个组装HTML的过程却不是那么简单,所以网上搜索了一写资料,可以简化这部分工作。

一、模板引擎渲染HTML

1.GRMustache模板引擎渲染HTML

  a.创建模板文件如下:

  <HTML>

    <HEAD> </HEAD>

    <BODY>

      <h1>{{name}}</h1>

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

    </BODY>

  </HTML>

这只是一个最简单的模板,你可以在这个文件中加入各种HTML元素标签等,{{参数名}}代替后面传进来的参数,这个参数名必须与后面穿参的字典中保持一致

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字符串了

二、OC与JS语言相互调用

1.OC语言调用JS语言

通过UIWebView的stringByEvaluatingJavaScriptFromString方法可以实现,该方法可以向UIWebView传入一段需要执行的JS代码,然后获得执行结果

2.JS调用OC语言

并没有原生的API,我们知道webView的代理方法中shouldStartLoadWithRequest会捕获webView跳转下一个页面,我们可以让H5在页面点击某个按钮的时候,发出一个你们定义规范的一个URL通过代理捕获解析(eg:  test://goToPage?pageID=1),从而自己定义跳转原生页面,或者其他操作。

原文地址:https://www.cnblogs.com/liuluoxing/p/5846495.html