近日公司需求变更,以前一个页面是后台返回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),从而自己定义跳转原生页面,或者其他操作。