天天看点

iOS:使用模板引擎渲染HTML界面

在实际开发中,UIWebView控件接受一个HTML内容,用于相应的界面,下面是该API的接口:

由于HTML内容通常是变化的,所以我们需要在内存中生成该HTML内容。比较简单粗暴的做法是将该HTML的基本内容定义在一个NSString中,然后用[NSString stringWothFormat]方法将内容进行格式化,示例如下:

iOS:使用模板引擎渲染HTML界面
iOS:使用模板引擎渲染HTML界面

但其实我们可以看出,这样写并不舒服,因为:

1、模板内容和代码混在一起,既不方便阅读,也不方便更改;

2、模板内容的渲染逻辑使用简单的[NSString stringWothFormat]来完成,功能单一。在实际开发中,我们很可能需要就原始数据进行二次处理,而这些如果模板渲染模块不能支持,我们就只能自己手工鞋这部分数据二次处理,费时费力。例如,微博的详情页面,如果微博的发送时间小于1天,则需要显示成"xxx小时前",如果小于1分钟,则需要显示成"刚刚"。这些界面渲染方便的逻辑如果能够抽取到专门的排版代码中,则会清晰很多。

所以我们需要一个模板引擎,专门负责这类渲染的工作。

对于上面的示例代码,在使用GRMustache模板后,我们首先需要调整模板的内容:

1、将模板内容放在一个单独的文件中,方便日后更改,如template.html

2、将原来的%@替换成{{ name }}的形式。

例如调整后的模板内容为:(文件名为:template.html) 

iOS:使用模板引擎渲染HTML界面
iOS:使用模板引擎渲染HTML界面

即如图:template.html

iOS:使用模板引擎渲染HTML界面

然后我们在代码中将该文件读取到内存中,再使用GRMustache的renderObject方法生成渲染后的HTML内容,示例代码如下:

iOS:使用模板引擎渲染HTML界面
iOS:使用模板引擎渲染HTML界面

这样,我们使用GRMustache模板引擎成功完成了HTML内容的渲染工作,之后就可以通过UIWebView来加载HTML的内容了:

iOS:使用模板引擎渲染HTML界面
iOS:使用模板引擎渲染HTML界面

下载GRMustache框架如下:

iOS:使用模板引擎渲染HTML界面
iOS:使用模板引擎渲染HTML界面

 Code:

iOS:使用模板引擎渲染HTML界面
iOS:使用模板引擎渲染HTML界面

打印渲染后HTML内容如下:

iOS:使用模板引擎渲染HTML界面
iOS:使用模板引擎渲染HTML界面

webView显示渲染后的HTML内容如下: 

iOS:使用模板引擎渲染HTML界面

GRMutstache提供的渲染HTML内容的核心类方法大概有如下这些:

iOS:使用模板引擎渲染HTML界面
iOS:使用模板引擎渲染HTML界面

作者提供的示例如:

本文参考书籍:《iOS开发进阶--唐巧》

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!

本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/6219656.html,如需转载请自行联系原作者

继续阅读