使用Html模版创建详情页面

在我们对一些界面的详情页面进行编程时(类似如新闻app,团购app等),有时候详情页面在使用一段时间后,需要不同排版效果,如果重新布置view页面布局,可能会浪费很多时间,产生一些麻烦。由于Html已经可以在iOS上嵌入,因此我们可以使用Html模版来,嵌套进UIwebview中进行使用,如果需要新的页面布局,只需要简单的更换Html模版,方便省事。

由于自己完全没有接触过Html编程,基本上对Html模版上的内容一窍不通,其实使用Html模版只需要了解其对应的标签,完成替换就可以了。我使用的Html模版包括三个文件:html文件(用来书写页面的内容),css文件(用来为页面布局设定),js文件(页面触发事件都在这里处理)。这三个页面我感觉类似ios的mvc开发模式。我们需要替换的标签内容主要在html文件中(代码一)。

代码一<html>
<head>
    <meta name="viewport" content="target-densitydpi=device-dpi,width=320,user-scalable=no"/>
    <link href=‘content.css‘ rel=‘stylesheet‘/>
    <script src="content.js"></script>
</head>

<body>

<div id="title_section" class="font_small">
<div id=‘title‘>{{title}}</div>
<div id=‘subtitle‘>{{source}}
<span aria-hidden="true">{{ptime}}</span></div>
</div>

<div id="body_section" lang="zh">
<p><div class=‘PRE‘>{{digest}}</div></p>
{{body}}
<p align="right">(责任编辑:{{ec}})</p>
<p align="center"><a href="source:///{{source_url}}" class="border_link">查看原文<span></span></a></p>
</div>

</body>
</html>

通过发送网络请求,将返回的json数据进行解析后得到一个nsdictionary,通过在model模型中进行赋值(如代码二,三),再将html中对应的标签进行简单的替换(代码四):将返回的nsstring,加载到webview上loadHTMLString,再添加html的模版路径(代码五),就可以实现了。

代码二@interface WebInfo : NSObject
@property(nonatomic, strong) NSString *title;
@property(nonatomic, strong) NSString *source;
@property(nonatomic, strong) NSString *ptime;
@property(nonatomic, strong) NSString *digest;
@property(nonatomic, strong) NSString *body;
@property(nonatomic, strong) NSString *ec;
@property(nonatomic, strong) NSString *sourceurl;
@property(nonatomic, strong) NSArray  *images;

+ (instancetype)infoFromDict:(NSDictionary *)dict;
代码三
+ (instancetype)infoFromDict:(NSDictionary *)dict
{
    WebInfo *info = [[WebInfo alloc] init];

    info.title = [dict objectForKey:@"title"];
    info.source = [dict objectForKey:@"source"];
    info.ptime = [dict objectForKey:@"ptime"];
    info.digest = [dict objectForKey:@"digest"];
    info.body = [dict objectForKey:@"body"];
    info.ec = [dict objectForKey:@"ec"];
    info.sourceurl = [dict objectForKey:@"source_url"];

    NSArray *images =[dict objectForKey:@"img"];
    info.images = [ImageInfo arrayFromArray:images];

    return info;
}
代码四// HTML标记
#define HtmlBody            @"{{body}}"
#define HtmlTitle           @"{{title}}"
#define HtmlSource          @"{{source}}"
#define HtmlPTime           @"{{ptime}}"
#define HtmlDigest          @"{{digest}}"
#define HtmlSourceURL       @"{{source_url}}"
#define HtmlImage           @"<p><img src=‘%@‘ style=‘margin:auto 0; width:100%%;‘ />"

-(NSString *)htmlConvert:(WebInfo *)Info
{
    NSString *file = [[NSBundle mainBundle]pathForResource:@"content_template2" ofType:@"html"];
    NSString *html = [[NSString alloc]initWithContentsOfFile:file encoding:NSUTF8StringEncoding error:nil];

    html = [html stringByReplacingOccurrencesOfString:HtmlBody withString:Info.body];
    html = [html stringByReplacingOccurrencesOfString:HtmlTitle withString:Info.title];
    html = [html stringByReplacingOccurrencesOfString:HtmlPTime withString:Info.ptime];
    html = [html stringByReplacingOccurrencesOfString:HtmlDigest withString:Info.digest];
    html = [html stringByReplacingOccurrencesOfString:HtmlSource withString:Info.source];
    return html;
}
代码五NSString *URLPath = [[NSBundle mainBundle]pathForResource:@"content_template" ofType:@"html"];
    NSString *htmlString = [self htmlConvert:Info];

 UIWebView * web = [[UIWebView alloc]initWithFrame:self.view.frame];
        web.delegate = self;
        [self.view addSubview:web];

        [web loadHTMLString:htmlString baseURL:[NSURL URLWithString:URLPath]];
时间: 2024-10-07 12:01:57

使用Html模版创建详情页面的相关文章

非常标准的类,获得和展示listview或gridview数据。并且点击获得详情页面。

1. 获得和展示listview或gridview package com.anzi.jmsht.ui; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.jso

ios 类似淘宝商品详情页面的效果

今天试着写ios 类似淘宝商品详情页面的效果 我用到的第三方库EGORefreshTableHeaderView下拉刷新的效果还有就是PWLoadMoreTableFooterView上拉加载更多 主要的思路在于UISCrollView两页,一页展示商品概况,另一页展示商品更多详情 首先,第一页的view包含一个UITableView,这个tableView实现PWLoadMoreTableFooterView中的delegate方法, 实现delegate代理方法的时候使用 - (void)s

商品详情页面特殊制作,获取网页的高度,collectionView根据内容的变化其高度也随着变化

商品详情页面特殊制作,获取网页的高度,collectionView根据内容的变化其高度也随着变化,首先先看下效果图: 然后我来介绍一下这个界面的总体架构,整个页面上放置一个tableView,下面的网页是tableView的footerview,中间规格所在的区域是一个cell上放置一个collectionView, 问题点1:商品规格可能有很多种,比如颜色.重量.也可能没有规格,所以中间的cell的高度是根据规格的多少而变化的,那么collectionView创建完成以后要怎么通知tableV

使用boilerplate模版创建解决方案

返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 话不多说,让我们开始干吧!对于还没有接触ABP框架或者接触时间还不是很长的小伙伴来说,我建议还是使用官方建议的做法,那就是到ABP框架的官网(http://www.aspnetboilerplate.com/),自动生成一个解决方案,你需要做的,只有下面简单的3步,Let's go! 注:官网首页上的创建解决方案的模版只适合没有权限管理模块的项目,但一般企业项目都有这块功能吧,那还是选择方法一吧,咳咳! 每步注解: 第一步:Angula

最后一个页面:构建电影详情页面

笔记内容:最后一个页面:构建电影详情页面 笔记日期:2018-02-02 电影搜索页面构建 我们想要有一个搜索电影的功能,需要在电影资讯页面顶部编写一个搜索框,当我们的鼠标焦点位于该搜索框时,就会显示出电影搜索页面,而点击搜索框的关闭图标时,需要隐藏电影搜索页面.所以这个电影搜索页面不是一个单独的页面文件,而是用隐/显的方式来做. 搜索框效果图: 要实现这个搜索框,我们首先需要一个表单组件:input,该组件的官方说明文档地址如下: https://mp.weixin.qq.com/debug/

JAVAEE——宜立方商城09:Activemq整合spring的应用场景、添加商品同步索引库、商品详情页面动态展示与使用缓存

1. 学习计划 1.Activemq整合spring的应用场景 2.添加商品同步索引库 3.商品详情页面动态展示 4.展示详情页面使用缓存 2. Activemq整合spring 2.1. 使用方法 第一步:引用相关的jar包. <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> </dependency> &l

python测试开发django-39.xadmin详情页面布局form_layout

前言 xadmin的详情页面默认是一行展示一个字段,可以使用form_layout对详情页面的布局重新设计. 可以设置必填和非必填字段,也可以设置不显示,不可以编辑的字段. models模块 先在models.py建2张表 class ArticleClassify(models.Model): '''文章分类''' n = models.CharField(max_length=30, verbose_name="分类", default="") def __st

Django测试开发-29- xadmin模板中详情页面布局form_layout详解

现状: xadmin的详情页面默认是一行展示一个字段 使用form_layout: 1. 可以设置必填和非必填字段 2. 可以设置显示不显示字段, 3. 可以设置不可以编辑的字段 一.未使用form_layout之前 models.py class ArticleClassify(models.Model): '''文章分类''' article_classify = models.CharField(max_length=30, verbose_name="分类", default=

商品详情页面的显示

当点击商品图片的时候,会跳转到商品的详情页面,我们看下具体是如何实现的: 1.点击商品的图片,打开商品详情页面 a)         商品基本信息 b)        延迟加载商品详情.延迟一秒加载使用ajax c)         商品的规格参数.按需加载,当用户点击商品规格参数tab页,加载ajax. 如图:点击图片后显示内容如下: 所以需要从三个表中获取数据,发布服务接口: 需要在taotao-rest工程中发布服务 1.取商品基本信息的服务 2.取商品描述的服务 3.取商品规格的服务 需