IOS开发之瀑布流和下拉刷新上拉加载实现
上传者:宋大雷|上传时间:2016-08-23|密次下载
IOS开发之瀑布流和下拉刷新上拉加载实现
效果图:

视图的层次结构
self.view --->AOWaterView(继承UIScrollView)--->v1,v2,v3(继承UIView) --->MessView(继承UIView)
--->UrlImageButton(继承UIButton,图片作为button的背景图片显示)
类的说明:
AOWaterView 继承UIScrollView,能够上下滑动,显示瀑布流。
MessView 继承UIView,图片显示在此视图中。
DataInfo 数据Model类
DataAccess 用于读取plist文件
主要实现代码:
1、读取dataList.plist中的数据,并保存到定义好的Model中,然后把Model存到一个数组中。初始化DataAccess
[objc] view plaincopy
//初始化
- (void)viewDidLoad
{
[super viewDidLoad];
//创建DataAccess对象,用来读取dataList.plist中的数据
DataAccess *dataAccess= [[DataAccess alloc]init];
//获取图片Model,加入数组
NSMutableArray *dataArray = [dataAccess getDateArray];
self.aoView = [[AOWaterView alloc]initWithDataArray:dataArray];
self.aoView.delegate=self;
[self.view addSubview:self.aoView];
}
读取数据
[objc] view plaincopy
-(NSDictionary *)getDicByPlist{
NSString *path=[[NSBundle mainBundle] pathForResource:@"dataList" ofType:@"plist"];
NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithContentsOfFile:path];
return dic;
}
//获取基础联系列表
-(NSMutableArray *)getDateArray{
NSDictionary *dic = [self getDicByPlist];
NSMutableArray *imageList = [[NSMutableArray alloc]init];
NSMutableArray *dicArray = [dic objectForKey:@"imageList"];
for (NSDictionary *vdic in dicArray) {
DataInfo *data=[[DataInfo alloc]init];
NSNumber *hValue=[vdic objectForKey:@"height"];
data.height= hValue.floatValue;
NSNumber *wValue=[vdic objectForKey:@"width"];
data.width= wValue.floatValue;
data.url = [vdic objectForKey:@"url"];
data.title=[vdic objectForKey:@"title"];
data.mess=[vdic objectForKey:@"mess"];
[imageList addObject:data];
}
return imageList;
}
[objc] view plaincopy
//初始化视图
-(id)initWithDataArray:(NSMutableArray *)array{
self=[super initWithFrame:CGRectMake(0, 0, 320, 416)];
if (self) {
[self initProperty];//初始化参数
for (int i=0; i<array.count; i++) { //遍历数组
if (i/3>0&&i%3==0) {
row++; //所在行数
}
DataInfo *data = (DataInfo*)[array objectAtIndex:i]; //取得Model数据
//如果是第一行,第一行高度一样
if (row==1) {
switch (i%3) {
case 0:
[self addMessView:lower DataInfo:data];
break;
case 1:
[self addMessView:lower DataInfo:data];
break;
case 2:
[self addMessView:lower DataInfo:data];
break;
default:
break;
}
}else{
[self addMessView:lower DataInfo:data];
}
//重新判断最高和最低view
[self getHViewAndLView];
}
//添加scrollView
[self setContentSize:CGSizeMake(320, highValue)];
[self addSubview:v1];
[self addSubview:v2];
[self addSubview:v3];
}
return self;
}
[objc] view plaincopy
//初始化参数
-(void)initProperty{
row =1;
//初始化第一列视图
v1 = [[UIView alloc]initWithFrame:CGRectMake(0, 0, WIDTH, 0)];
//初始化第二列视图
v2 = [[UIView alloc]initWithFrame:CGRectMake(WIDTH, 0, WIDTH, 0)];
//初始化第三列视图
v3 = [[UIView alloc]initWithFrame:CGRectMake( WIDTH*2,0, WIDTH, 0)];
//初始化最高视图
higher =1;
//初始化最低视图
lower=1;
//最高列高度
highValue=1;
}
[objc] view plaincopy
//向视图添加MessView
-(void)addMessView:(int)lValue DataInfo:(DataInfo *)data{
MessView *mView=nil;
float hValue=0;
switch (lValue) {
case 1:
// 创建内容视图
mView= [[MessView alloc]initWithData:data yPoint:v1.frame.size.height];
hValue=mView.frame.size.height;
//把新加的图片高度累加到v1的原高度 并把新高度赋给v1
v1.frame=CGRectMake(v1.frame.origin.x, v1.frame.origin.y, WIDTH, v1.frame.size.height+hValue);
[v1 addSubview:mView];
break;
case 2:
// 创建内容视图
mView= [[MessView alloc]initWithData:data yPoint:v2.frame.size.height];
hValue=mView.frame.size.height;
v2.frame=CGRectMake(v2.frame.origin.x, v2.frame.origin.y, WIDTH, v2.frame.size.height+hValue);
[v2 addSubview:mView];
break;
case 3:
// 创建内容视图
mView= [[MessView alloc]initWithData:data yPoint:v3.frame.size.height];
hValue=mView.frame.size.height;
v3.frame=CGRectMake(v3.frame.origin.x, v3.frame.origin.y, WIDTH, v3.frame.size.height+hValue);
[v3 addSubview:mView];
break;
default:
break;
}
}
[objc] view plaincopy
-(id)initWithData:(DataInfo *)data yPoint:(float) y{
float imgW=data.width;//图片原宽度
float imgH=data.height;//图片原高度
float sImgW = WIDTH-4;//缩略图宽带
float sImgH = sImgW*imgH/imgW;//缩略图高度,等比放大缩小
self = [super initWithFrame:CGRectMake(0, y, WIDTH, sImgH+4)];
if (self) {
UrlImageButton *imageBtn = [[UrlImageButton alloc]initWithFrame:CGRectMake(2,2, sImgW, sImgH)];//初始化url图片按钮控件
//设置图片地址,用到了第三方框架UrlImageButton
[imageBtn setImageFromUrl:YES withUrl:data.url];
[imageBtn addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:imageBtn];
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(2, self.frame.size.height-22, WIDTH-4, 20)];
label.backgroundColor = [UIColor blackColor];
label.alpha=0.8;
label.text=data.title;
label.textColor =[UIColor whiteColor];
[self addSubview:label];
}
return self;
}
[objc] view plaincopy
//重新判断最高和最低view
-(void)getHViewAndLView{
if (v1.frame.size.height>highValue) { //判断v1的高度是否大于最高列高度
highValue=v1.frame.size.height; //如果大于,把高度赋给highValue
higher=1; //设置视图高度最高的列数
}else if(v2.frame.size.height>highValue) {
highValue=v2.frame.size.height;
higher=2;
}else if(v3.frame.size.height>highValue) {
highValue=v3.frame.size.height;
higher=3;
}
float v1Height=v1.frame.size.height;
float v2Height=v2.frame.size.height;
float v3Height=v3.frame.size.height;
//求得视图高度最小的列数
if (v1Height<v2Height) {
if (v1Height<v3Height) {
lower=1;
}else{
lower=3;
}
}else{
if (v2Height<v3Height) {
lower=2;
}else{
lower=3;
}
}
}
下载文档
热门试卷
- 2016年四川省内江市中考化学试卷
- 广西钦州市高新区2017届高三11月月考政治试卷
- 浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
- 浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
- 辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
- 广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
- 广西钦州市钦州港区2017届高三11月月考政治试卷
- 广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
- 广西钦州市高新区2016-2017学年高二11月月考政治试卷
- 广西钦州市高新区2016-2017学年高一11月月考政治试卷
- 山东省滨州市三校2017届第一学期阶段测试初三英语试题
- 四川省成都七中2017届高三一诊模拟考试文科综合试卷
- 2017届普通高等学校招生全国统一考试模拟试题(附答案)
- 重庆市永川中学高2017级上期12月月考语文试题
- 江西宜春三中2017届高三第一学期第二次月考文科综合试题
- 内蒙古赤峰二中2017届高三上学期第三次月考英语试题
- 2017年六年级(上)数学期末考试卷
- 2017人教版小学英语三年级上期末笔试题
- 江苏省常州西藏民族中学2016-2017学年九年级思想品德第一学期第二次阶段测试试卷
- 重庆市九龙坡区七校2016-2017学年上期八年级素质测查(二)语文学科试题卷
- 江苏省无锡市钱桥中学2016年12月八年级语文阶段性测试卷
- 江苏省无锡市钱桥中学2016-2017学年七年级英语12月阶段检测试卷
- 山东省邹城市第八中学2016-2017学年八年级12月物理第4章试题(无答案)
- 【人教版】河北省2015-2016学年度九年级上期末语文试题卷(附答案)
- 四川省简阳市阳安中学2016年12月高二月考英语试卷
- 四川省成都龙泉中学高三上学期2016年12月月考试题文科综合能力测试
- 安徽省滁州中学2016—2017学年度第一学期12月月考高三英语试卷
- 山东省武城县第二中学2016.12高一年级上学期第二次月考历史试题(必修一第四、五单元)
- 福建省四地六校联考2016-2017学年上学期第三次月考高三化学试卷
- 甘肃省武威第二十三中学2016—2017学年度八年级第一学期12月月考生物试卷
网友关注
- 地铁系统防雷装置的设置Word
- 童教英语
- 如何让学生喜欢上英语(1)
- 日语与人体有关的惯用句
- 西游记背后的性格偏好Word
- 第五章 学前智力落后儿童的教育Word
- 认识园林植物Word
- 日语学习班多少钱
- 常见的搪玻璃设备失效形式Word
- 第七课 整理英语句子
- 盼盼爽口片.奥美Word
- 第七章 受污染环境的修复Word
- 燃烧原理与设备4Word
- 智能交通系统基础技术Word
- 定语从句
- 《阅读学新论》读后感
- 员工激励新方法(59页Word)
- 汉语教师志愿者的理想和信念
- 关于对外汉语教学理论相关问题的综述_语言迁移_中介语_二语习得_张述娟
- 烹饪英语09-10海鲜与面点Word
- 新《行政诉讼法》制度创新解读Word
- 《旅游英语》05City SightseeingWord
- 第3节-从新闻到新闻事业Word
- 2013版毛概第五章第一节Word
- 英语天气表达
- 《旅游英语》09ShoppingWord
- 课件(7)第五章 宪法的结构Word
- 智能交通系统平台建设Word
- 《旅游英语》06Sightseeing Natural SceneryWord
- 麦道新品上市分析Word
网友关注视频
- 8.对剪花样_第一课时(二等奖)(冀美版二年级上册)_T515402
- 北师大版八年级物理下册 第六章 常见的光学仪器(二)探究凸透镜成像的规律
- 苏科版数学七年级下册7.2《探索平行线的性质》
- 化学九年级下册全册同步 人教版 第22集 酸和碱的中和反应(一)
- 【部编】人教版语文七年级下册《泊秦淮》优质课教学视频+PPT课件+教案,湖北省
- 七年级英语下册 上海牛津版 Unit9
- 【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,安徽省
- 沪教版牛津小学英语(深圳用) 四年级下册 Unit 12
- 二年级下册数学第二课
- 北师大版数学四年级下册3.4包装
- 冀教版英语三年级下册第二课
- 第五单元 民族艺术的瑰宝_15. 多姿多彩的民族服饰_第二课时(市一等奖)(岭南版六年级上册)_T129830
- 沪教版八年级下册数学练习册20.4(2)一次函数的应用2P8
- 沪教版牛津小学英语(深圳用) 四年级下册 Unit 3
- 二年级下册数学第一课
- 冀教版英语四年级下册第二课
- 七年级英语下册 上海牛津版 Unit3
- 8 随形想象_第一课时(二等奖)(沪教版二年级上册)_T3786594
- 冀教版小学数学二年级下册第二单元《有余数除法的竖式计算》
- 沪教版牛津小学英语(深圳用) 五年级下册 Unit 10
- 北师大版小学数学四年级下册第15课小数乘小数一
- 【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,安徽省
- 二次函数求实际问题中的最值_第一课时(特等奖)(冀教版九年级下册)_T144339
- 苏科版八年级数学下册7.2《统计图的选用》
- 化学九年级下册全册同步 人教版 第25集 生活中常见的盐(二)
- 苏教版二年级下册数学《认识东、南、西、北》
- 【部编】人教版语文七年级下册《老山界》优质课教学视频+PPT课件+教案,安徽省
- 3.2 数学二年级下册第二单元 表内除法(一)整理和复习 李菲菲
- 冀教版小学数学二年级下册第二单元《租船问题》
- 精品·同步课程 历史 八年级 上册 第15集 近代科学技术与思想文化
精品推荐
- 2016-2017学年高一语文人教版必修一+模块学业水平检测试题(含答案)
- 广西钦州市高新区2017届高三11月月考政治试卷
- 浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
- 浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
- 辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
- 广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
- 广西钦州市钦州港区2017届高三11月月考政治试卷
- 广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
- 广西钦州市高新区2016-2017学年高二11月月考政治试卷
- 广西钦州市高新区2016-2017学年高一11月月考政治试卷
- 2017国考行测(副省)判断推理深度解读:推陈出新 古典题型比重上升
- 2017国考行测资料分析深度解读:图形选项首次双生
- kaiyun体育:”2017国考行测常识判断深度解读:考查常规 难度适中“
- 2017国考行测地市级言语理解深度解读:考点延续以往,高频成语频现
- 2017国家公务员考试行测试题之“最”盘点-AG真人娱乐注册网
- 2017国家公务员考试最有意思的行测试题盘点
- 2017国考行测试卷最“励志”题目盘点
- 2017国考申论解析:“以水为师”聚焦城市发展智慧
- ky棋牌88在线登录官方正版下载-ky棋牌88在线登录官网手机版下载V9.20.6
- 2017国考申论(地市)亮点解析:概括“功能”首次出现在国考中
分类导航
- 互联网
- 电脑基础知识
- 计算机软件及应用
- 计算机硬件及网络
- 计算机应用/办公自动化
- .NET
- 数据结构与算法
- Java
- SEO
- C/C++资料
- linux/Unix相关
- 手机开发
- UML理论/建模
- 并行计算/云计算
- 嵌入式开发
- windows相关
- 软件工程
- 管理信息系统
- 开发文档
- 图形图像
- 网络与通信
- 网络信息安全
- 电子支付
- Labview
- matlab
- 网络资源
- Python
- Delphi/Perl
- 评测
- Flash/Flex
- CSS/Script
- 计算机原理
- PHP资料
- 数据挖掘与模式识别
- Web服务
- 数据库
- Visual Basic
- 电子商务
- 服务器
- 搜索引擎优化
- 存储
- 架构
- 行业软件
- 人工智能
- 计算机辅助设计
- 多媒体
- 软件测试
- 计算机硬件与维护
- 网站策划/UE
- 网页设计/UI
- 网吧管理

