MGTemplateEngine 模版发动机简单使用
https://github.com/nxtbgthng/MGTemplateEngine
MGTemplateEngine 模版引擎
MGTemplateEngine比較象 PHP 中的 Smarty 模版引擎。是一个轻量级的引擎,简单好用。仅仅要设置非常多不同的HMTL模版。就能轻松的实现一个View多种内容格式的显示,对于不熟悉HTML或者减轻工作量而言,把这些工作让设计分担一下还是非常好的,也比較easy实现设计想要的效果。
首先,看看模版的代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="./detail.css" rel="stylesheet">
</head>
<body>
<div id='container' name="container">
<div class="title">{{ title }}</div>
<div class="date">{{ date }}</div>
<div class="content">{{ content }}</div>
</div>
</body>
</html>
Objective-C代码 - 以下的创建代码MGTemplateEngine都是从官方的样例中參考下来的,已经有非常具体的说明
// Set up template engine with your chosen matcher.
MGTemplateEngine *engine = [MGTemplateEngine templateEngine];
//[engine setDelegate:self];
[engine setMatcher:[ICUTemplateMatcher matcherWithTemplateEngine:engine]];
// 这里就是设置。或者里边塞变量的地方。
事实上也能够设置一个数组,这样模板的灵活也会更强。这里我就不演示了官方有样例
[engine setObject:self.detailData[@"title"] forKey:@"title"];
[engine setObject:self.detailData[@"content"] forKey:@"content"];
// MGTemplateEngine/Detail/detail.html
// MGTemplateEngine/Detail/detail.css
NSString *templatePath = [[NSBundle mainBundle] pathForResource:@"detail" ofType:@"html"];
// Process the template and display the results.
NSString *html = [engine processTemplateInFileAtPath:templatePath withVariables:nil];
// 获得HTML
self.htmlWebView = [[UIWebView alloc] initWithFrame:CGRectMake(8, 5, 304, 320)];
self.htmlWebView.delegate = self;
self.htmlWebView.userInteractionEnabled = NO;
// 你就能载入到HTML里面的.css文件
NSString *baseURL = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Detail"];
[self.htmlWebView loadHTMLString:html baseURL:[NSURL fileURLWithPath:baseURL]];
[self.detailView addSubview:self.htmlWebView];
由于我的UIWebView是在插入到UITableView,所以在UIWebView载入完后,就得又一次计算高度。由于我想让用户感觉不到这事实上是一个HTML。
// 我将UIWebView加入到了self.detailView
self.listTableView.tableHeaderView = self.detailView;
#pragma mark -
#pragma mark -# UIWebViewDelegate
- (void)webViewDidFinishLoad:(UIWebView *)webView {
// 获取整个HMTL的高度,这非常好理解。非常easy的JS
NSString *heightString = [self.htmlWebView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"container\").offsetHeight;"];
// 重设view内容大小
CGRect nFrame = self.detailView.frame;
nFrame.size.height = [heightString doubleValue] + 35.0;
self.detailView.frame = nFrame;
// 重设webview内容大小
CGRect nWebViewFrame = self.htmlWebView.frame;
nWebViewFrame.size.height = [heightString doubleValue] + 15;
self.htmlWebView.frame = nWebViewFrame;
// 让UIWebView载入完后,才设置UITableView,最后才载入评论
[self tableViewSetting];
[self getCommentList];
}
以上的都是 MGTemplateEngine 非常主要的使用。将来也会大派用场的。对于内容页的显示,没有比HTML来的更方便直接,通过切换模版和简单的參数设置,多个不同类型的栏目也能够使用同一个具体页,非常大程度上减轻工作理和易于维护。
MGTemplateEngine 模版发动机简单使用的更多相关文章
- MGTemplateEngine 模版引擎简单使用(转)
原文:http://blog.csdn.net/crazy_srufboy/article/details/21748995 要实现的效果 首先上图中间的 标题至内容 都是使用UIWebView显示, ...
- C++函数模版的简单使用
模版算是C++的独有特性吧,也算是C++中比较难的地方,我平时开发的时候用的非常少,或者几乎没有用到,需要模版的地方是能看懂框架中相关的代码: 模版函数相对还是很简单的,引入模版的目的在于代码的重用: ...
- Java开发桌面程序学习(九)——JavaFxTemplate JavaFx模版 更简单进行JavaFx程序开发
JavaFxTemplate 使用说明 项目基于maven,请确保maven配置成功,否则,可能会出现问题 项目内置了commons-io的jar包,Jfoenix的jar包以及常用的工具类JFxUt ...
- BASH 文本模版的简单实现 micro_template_compile
详细代码 ############################### # # Funciton: micro_template_compile # # Parameter: # [1] => ...
- 一个基于POI的通用excel导入导出工具类的简单实现及使用方法
前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...
- 前端MVC、MVVM的简单实现
MVC MVC是一种设计模式,它将应用划分为3个部分:数据(模型).展示层(视图)和用户交互层.结合一下下图,更能理解三者之间的关系.换句话说,一个事件的发生是这样的过程 用户和应用交互 控制器的事件 ...
- 用jekyll制作高大上的网站(二)——实际应用
最近公司要制作个文档库,直接就可以将jekyll应用到实际中. 模版使用了Jekyll Clean,这么模版相对内部简单一点,学习成本不会很大,而复杂的Minimal Mistakes就当作参考. 模 ...
- [译]ABP框架使用AngularJs,ASP.NET MVC,Web API和EntityFramework构建N层架构的SPA应用程序
本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...
- 数据字典生成工具之旅(7):NVelocity实现代码生成器
这个系统好久没有更新了,人也慢慢变懒了,从现在开始每个月至少写三篇文章,欢迎大家监督.对了预告一下,该系列完成以后将为大家带来WebApp开发系列篇,敬请期待.先上几张图,放在文章最后面欢迎预览! 本 ...
随机推荐
- 【bzoj2698】染色 期望
题目描述 输入 输入一行四个整数,分别为N.M.S和T. 输出 输出一行为期望值,保留3位小数. 样例输入 5 1 2 3 样例输出 2.429 题解 期望 由于期望在任何时候都是可加的,因此只要算出 ...
- HDU——2723Electronic Document Security(STL map嵌套set做法)
Electronic Document Security Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- BZOJ 4817 [Sdoi2017]树点涂色 ——LCT 线段树
同BZOJ3779. SDOI出原题,还是弱化版的. 吃枣药丸 #include <map> #include <cmath> #include <queue> # ...
- java面试题之什么是线程ThreadLocal?作用是什么?
定义:线程局部变量是局限于线程内的变量,属于线程自身所有,不在多个线程间共享.java提供ThreadLocal类来支持线程局部变量,是一个实现线程安全的方式. 任何线程局部变量一旦在工作完成后没有释 ...
- python并发之concurrent.futures
concurrent:并发 Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程/多进程代码.从Python3.2开始,标准库为我们提供了concurr ...
- d3 svg简单学习
矩形 <rect x="/> 圆形 <circle cx="/> 椭圆 <ellipse cx="/> 线 <line x1=& ...
- mybatis如何传入一个list参数
<!-- 7.2 foreach(循环List<String>参数) - 作为where中in的条件 --> <select id="getStudentLi ...
- 【Visual Studio】error: /ZI”和“/Gy-”命令行选项不兼容(转)
原文转自 http://bbs.100home.net/view/4206.html [问题说明]vc6项目用vs2015打开时遇到的错误 [解决方法]项目属性->c/c++->常规-&g ...
- 解决 unresolved external symbol 无法解析 _send@16(转)
(1) vc网络编程中遇到一个编译问题,原来是少了WSOCK32.LIB. 在 project-->settings-->Link-->Object/Library modules ...
- IPC 通信接口函数的名字
IPC三种通信机制是指:信号量.共享内存.消息队列 ,管道和命名管道,socket套接字 信号量:通过操作系统中的PV操作来实现: 共享内存:申请一块内存,进程A往共享内存中写,其他的进程就 ...