UICollectionView的简单使用
ChildModel.h
#import <Foundation/Foundation.h> @interface ChildModel : NSObject @property (nonatomic, strong) NSString *imageString; @property (nonatomic, strong) NSString *nameString; - (instancetype)initWithDic:(NSDictionary *)dic; @end
ChildModel.m
#import "ChildModel.h" @implementation ChildModel - (instancetype)initWithDic:(NSDictionary *)dic
{
self = [super init];
if (self)
{
_imageString = dic[@"image"];
_nameString = dic[@"name"];
}
return self;
} @end
JFCell.h
#import <UIKit/UIKit.h>
#import "ChildModel.h" @interface JFCell : UICollectionViewCell @property (nonatomic ,strong) UIImageView *cellImageView; @property (nonatomic ,strong) UILabel *cellLabel; - (void)updateJFCellWithObj:(ChildModel *)childObj; @end
JFCell.m
#import "JFCell.h" @implementation JFCell
@synthesize cellImageView,cellLabel;
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
self.cellImageView = [[UIImageView alloc] initWithFrame:CGRectMake(, , frame.size.width, frame.size.height-)];
self.cellImageView.backgroundColor = [UIColor brownColor];
[self addSubview:self.cellImageView]; self.cellLabel = [[UILabel alloc] initWithFrame:CGRectMake(, frame.size.height-, frame.size.width, )];
self.cellLabel.backgroundColor = [UIColor lightGrayColor];
self.cellLabel.font = [UIFont systemFontOfSize:];
self.cellLabel.textAlignment = NSTextAlignmentCenter;
[self addSubview:self.cellLabel];
}
return self;
} - (void)updateJFCellWithObj:(ChildModel *)childObj
{
self.cellImageView.image = [UIImage imageNamed:childObj.imageString];
self.cellLabel.text = childObj.nameString;
}
@end
ViewController.m
#import "ViewController.h"
#import "JFCell.h" //每行的cell个数
#define counts 3
//边距
#define margin 5 static NSString *cellString = @"cell"; @interface ViewController ()<UICollectionViewDataSource,UICollectionViewDelegate>
{
UICollectionView *JFCollectionView;
NSMutableArray *childArray;
} @end @implementation ViewController - (void)viewDidLoad
{
[super viewDidLoad];
childArray = [[NSMutableArray alloc] init];
//添加视图
[self addCollectionView];
//请求数据
[self requestData]; //-------------------①用户请求
} - (void)addCollectionView
{
CGFloat cellWidch = ([[UIScreen mainScreen] bounds].size.width-(counts+)*margin)/counts;
//专门负责布局的类
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
//滑动方向(纵向)
flowLayout.scrollDirection = UICollectionViewScrollDirectionVertical;
//元素的size
flowLayout.itemSize = CGSizeMake(cellWidch, cellWidch+);
//元素的横向间距
flowLayout.minimumLineSpacing = margin;
//元素的纵向间距
flowLayout.minimumInteritemSpacing = margin;
//组距离 视图边上下左右的距离
flowLayout.sectionInset = UIEdgeInsetsMake(margin, margin, margin, margin);
JFCollectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(, , [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height) collectionViewLayout:flowLayout];
JFCollectionView.backgroundColor = [UIColor whiteColor];
JFCollectionView.dataSource = self;
JFCollectionView.delegate = self;
//注册cell,重用
[JFCollectionView registerClass:[JFCell class] forCellWithReuseIdentifier:cellString];
[self.view addSubview:JFCollectionView];
}
#pragma mark ----------------------UICollectionViewDataSource-------------------
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return childArray.count;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
JFCell *cell = [JFCollectionView dequeueReusableCellWithReuseIdentifier:cellString forIndexPath:indexPath];
//根据数据更新视图
[cell updateJFCellWithObj:childArray[indexPath.row]]; //------④更新视图,响应用户请求
return cell;
} - (void)requestData
{
//构造虚拟数据(通常是从网络服务器获取到Json数据)
NSArray *dataArray = @[
@{@"image":@"1.jpg",@"name":@"小美"},
@{@"image":@"2.jpg",@"name":@"小娜"},
@{@"image":@"4.jpg",@"name":@"小明"},
@{@"image":@"3.jpg",@"name":@"小娜"},
@{@"image":@"1.jpg",@"name":@"小美"},
@{@"image":@"5.jpg",@"name":@"小娜"},
@{@"image":@"6.jpg",@"name":@"小美"},
@{@"image":@"7.jpg",@"name":@"小娜"},
@{@"image":@"8.jpg",@"name":@"小苏"},
@{@"image":@"2.jpg",@"name":@"小娜"},
@{@"image":@"3.jpg",@"name":@"小娜"},
@{@"image":@"1.jpg",@"name":@"小娜"},
@{@"image":@"3.jpg",@"name":@"小娜"},
@{@"image":@"4.jpg",@"name":@"小娜"},
@{@"image":@"5.jpg",@"name":@"小娜"},
];
for (NSDictionary *dic in dataArray)
{
ChildModel *model = [[ChildModel alloc] initWithDic:dic]; //----------②请求更新数据
[childArray addObject:model];
}
//得到数据后更新视图
[JFCollectionView reloadData]; //------------③通知视图更新
}
@end
UICollectionView的简单使用的更多相关文章
- UICollectionView 很简单的写个瀑布流
你项目中要用到它吗? 可能会在你的项目中用到这玩意,最近也是要用就简单的写了一个 Demo.没多少代码,就不放Git了,下面会详细点的说说代码的,要还有什么问题的小伙伴可以直接Q我,也可以把Demo发 ...
- UICollectionView的简单认识和简单实用
摘要 UICollectionView是比UITableView更加复杂的UI控件,通过它可以实现许多复杂的流布局.但对我们来说,系统提供的接口十分简单易用,并且有十分强的制定性. iOS流布局UIC ...
- iOS 流布局 UICollectionView使用(简单使用)
简介 UICollectionView是iOS6之后引入的一个新的UI控件,它和UITableView有着诸多的相似之处,其中许多代理方法都十分类似.简单来说,UICollectionView是比UI ...
- UICollectionView的简单使用和常用代理方法
UICollectionView相对于UITableView有更加自由的布局,做出的界面可变性更大最近开始接触使用UICollectionView,整理了一下常用的代理方法 首先需要先添加UIColl ...
- UICollectionView进阶练习
上一篇中的干货看完,不觉感觉还是有点虚,今天我们来点实的,做了两个小DEMO,源码已放GitHub,主要是针对UICollectionView做了联系.第一个DEMO是针对UICollectionVi ...
- iOS流布局UICollectionView使用FlowLayout进行更灵活布局
一.引言 前面的博客介绍了UICollectionView的相关方法和其协议中的方法,但对布局的管理类UICollectionViewFlowLayout没有着重探讨,这篇博客介绍关于布局的相关设置和 ...
- IOS客户端Coding项目记录导航
IOS客户端Coding项目记录(一) a:UITextField设置出现清除按键 b:绘画一条下划线 表格一些设置 c:可以定义表头跟底部视图(代码接上面) d:隐藏本页的导航栏 e:UIEdge ...
- IOS客户端Coding项目记录(二)
9:第三方插件整理 JSON转实体:jsonModel https://github.com/icanzilb/JSONModel/ 美化按键:BButton https://github.com/m ...
- iOS-UICollectionView快速构造/拖拽重排/轮播实现
代码地址如下:http://www.demodashi.com/demo/11366.html 目录 UICollectionView的定义 UICollectionView快速构建GridView网 ...
随机推荐
- c# sql连接数据库
using System.Data.SqlClient; private static string connectionString ="Data Source=.\\HS;Initial ...
- Latex 中宽度的设置和理解
\textwidth, 文本区域的全部宽度 \columnwidth, 文本中一列的宽度,单栏或者多栏的情况下,值是不同的 但是,一旦\textwidth, \columnwidth, \linewi ...
- LVS+DR源码安装
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- spring mvc处理json
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- git克隆远程项目分支到本地对应分支
最近公司改用git了,研究了一下如何把远程的代码克隆到本地. 1. 配置对应信息 git config --global user.name git config --global user.emai ...
- 【PAT Advanced Level】1006. Sign In and Sign Out (25)
关键在于清空字符数组和使用scanf进行输入 #include <stdio.h> #include <string.h> #include <fstream> # ...
- Tomcat启用HTTPS(生成证书、配置Tomcatserver)
Windows下的配置: 第一步:为server生成证书 使用keytool 为 Tomcat 生成证书.假定目标机器的域名是" localhost ". keystore 文件存 ...
- 【Android开发经验】使用Ant批量打包Android应用全然指南
本文章由Socks完毕.博客地址:http://blog.csdn.net/zhaokaiqiang1992 转载请说明. 折腾了一下午.百度了一下午,最终实现了使用Ant对Android应用的批量打 ...
- CircleProgressBar
http://www.eoeandroid.com/thread-333984-1-1.html CircleProgressBar.rar
- Android下得到APK包含信息
很多情况下,我们需要通过APK文件来得到它的一些信息. (此时此APK不一定被安装了) 0. 基础知识:可以通过android.content.Context的方法 getPackageManager ...