教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> IT计算机> 手机开发> IOS开发之瀑布流和下拉刷新上拉加载实现

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月月考生物试卷

网友关注视频

苏科版数学八年级下册9.2《中心对称和中心对称图形》
外研版八年级英语下学期 Module3
【获奖】科粤版初三九年级化学下册第七章7.3浓稀的表示
二年级下册数学第三课 搭一搭⚖⚖
河南省名校课堂七年级下册英语第一课(2020年2月10日)
外研版英语三起5年级下册(14版)Module3 Unit2
19 爱护鸟类_第一课时(二等奖)(桂美版二年级下册)_T502436
【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,安徽省
沪教版牛津小学英语(深圳用) 四年级下册 Unit 7
沪教版牛津小学英语(深圳用) 五年级下册 Unit 7
沪教版牛津小学英语(深圳用)五年级下册 Unit 1
冀教版小学数学二年级下册第二单元《有余数除法的整理与复习》
19 爱护鸟类_第一课时(二等奖)(桂美版二年级下册)_T3763925
第五单元 民族艺术的瑰宝_15. 多姿多彩的民族服饰_第二课时(市一等奖)(岭南版六年级上册)_T129830
苏科版数学 八年级下册 第八章第二节 可能性的大小
外研版英语三起6年级下册(14版)Module3 Unit1
【部编】人教版语文七年级下册《泊秦淮》优质课教学视频+PPT课件+教案,湖北省
外研版英语七年级下册module1unit3名词性物主代词讲解
化学九年级下册全册同步 人教版 第22集 酸和碱的中和反应(一)
沪教版八年级下次数学练习册21.4(2)无理方程P19
冀教版小学数学二年级下册第二单元《有余数除法的简单应用》
8.练习八_第一课时(特等奖)(苏教版三年级上册)_T142692
北师大版数学四年级下册3.4包装
外研版英语三起6年级下册(14版)Module3 Unit2
冀教版英语四年级下册第二课
冀教版小学数学二年级下册第二单元《余数和除数的关系》
外研版英语七年级下册module3 unit1第二课时
六年级英语下册上海牛津版教材讲解 U1单词
苏科版数学七年级下册7.2《探索平行线的性质》
3月2日小学二年级数学下册(数一数)