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网 ...
随机推荐
- 转:SQL Server 批量插入数据的两种方法
在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量 ...
- 解决eclipse 使用run运行,始终会跳到debug模式!
查看此选项是否选择中卫always,若是,更改为never或prompt,重启eclipse即可
- ELK beats通用配置说明(12th)
Beats配置文件是以YAML语法,该文件包含用于所有的beats的通用配置选项,以及其特点的选项.下面说说通用的配置,特定的配置要看各自beat文档. 通用的配置如下几部分: Shipper Out ...
- OO ALV 学习参考
http://blog.csdn.net/sapliumeng/article/details/18653491 一.ALV介绍 The ALV Grid Control (ALV = SAPLi ...
- Mac下移动硬盘不能粘贴
不想格式化,安装 Paragon NTFS 10.0.2 from:http://www.nowmac.com/support/mac/664.html 就可以解决
- Codeforces Beta Round #96 (Div. 1) D. Constants in the language of Shakespeare 贪心
D. Constants in the language of Shakespeare Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codef ...
- MyEclipse设置默认的目光格式
首先,选择菜单 windows-->preference Java-->Code Style-->Code Templates code-->new Java files 然后 ...
- stap-prep 需要安装那些内核符号
[root@server-mysql ~]# Need to install the following packages:kernel-debuginfo-2.6.32-279.el6.x86_64 ...
- C++如何用system命令获取文件夹下所有文件名
http://www.cplusplus.com/reference/cstdlib/system/ http://bbs.csdn.net/topics/30068943 #include < ...
- 五、Socket之UDP异步传输文件-实现传输中取消传送
上一篇文章四.Socket之UDP异步传输文件中,只实现了传输开始前拒绝接收文件,没有实现文件传输进行的时候取消传送,这篇文章中我们就来介绍怎样实现这个功能. 在传输过程中取消文件的传送,有很多地方要 ...