原文:http://blog.csdn.net/crazy_srufboy/article/details/21748995css
要实现的效果html

首先上图中间的 标题至内容 都是使用UIWebView显示,评论是UITableView能够往下拖加载更多评论,也能够增长评论同删除评论。web
动机数组
评细页中使用 UIWebView 会使显示内容更加的灵活和简单,固然你也许能够网上找UITextView的扩展一样也行,但我感受HTML更符合个人需求。在多年的PHP开发中咱们知道,其实详细页都是大同小异,主要是显示的内容风格不一样。但在iOS平台上,作这些拼拼接接的活很累也不易于维护,还要不断计算各类类型页面对象的位置,实在吃力不讨好。使用UIWebView将是一个不错的选择。xcode
MGTemplateEngine 模版引擎
网站
MGTemplateEngine比较象 PHP 中的 Smarty 模版引擎,是一个轻量级的引擎,简单好用。只要设置不少不一样的HMTL模版,就能轻松的实现一个View多种内容格式的显示,对于不熟悉HTML或者减轻工做量而言,把这些工做让设计分担一下仍是很好的,也比较容易实现设计想要的效果。lua
首先,看看模版的代码spa
- <!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都是从官方的例子中参考下来的,已经有很详细的说明.net
- MGTemplateEngine *engine = [MGTemplateEngine templateEngine];
- [engine setMatcher:[ICUTemplateMatcher matcherWithTemplateEngine:engine]];
-
- [engine setObject:self.detailData[@"title"] forKey:@"title"];
- [engine setObject:self.detailData[@"content"] forKey:@"content"];
-
- NSString *templatePath = [[NSBundle mainBundle] pathForResource:@"detail" ofType:@"html"];
-
- NSString *html = [engine processTemplateInFileAtPath:templatePath withVariables:nil];
-
-
- self.htmlWebView = [[UIWebView alloc] initWithFrame:CGRectMake(8, 5, 304, 320)];
- self.htmlWebView.delegate = self;
- self.htmlWebView.userInteractionEnabled = NO;
-
- NSString *baseURL = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Detail"];
- [self.htmlWebView loadHTMLString:html baseURL:[NSURL fileURLWithPath:baseURL]];
- [self.detailView addSubview:self.htmlWebView];
由于个人UIWebView是在插入到UITableView,因此在UIWebView加载完后,就得从新计算高度。由于我想让用户感受不到这实际上是一个HTML。 设计
- self.listTableView.tableHeaderView = self.detailView;
- #pragma mark -
- #pragma mark -# UIWebViewDelegate
-
- - (void)webViewDidFinishLoad:(UIWebView *)webView {
-
-
- NSString *heightString = [self.htmlWebView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"container\").offsetHeight;"];
-
-
- CGRect nFrame = self.detailView.frame;
- nFrame.size.height = [heightString doubleValue] + 35.0;
- self.detailView.frame = nFrame;
-
-
- CGRect nWebViewFrame = self.htmlWebView.frame;
- nWebViewFrame.size.height = [heightString doubleValue] + 15;
- self.htmlWebView.frame = nWebViewFrame;
-
-
- [self tableViewSetting];
- [self getCommentList];
- }
以上的都是 MGTemplateEngine 很基本的使用,未来也会大派用场的。对于内容页的显示,没有比HTML来的更方便直接,经过切换模版和简单的参数设置,多个不一样类型的栏目也可使用同一个详细页,很大程度上减轻工做理和易于维护。
要更深刻的了解,能够去 MGTemplateEngine 官方网站