UICollectionView 集合视图用法,自定义Cell
在View里面
//1.创建UICollectionViewFlowLayout
UICollectionViewFlowLayout *flowLayout=[[UICollectionViewFlowLayout alloc] init];
//设置
//1.1设置大小
flowLayout.itemSize=CGSizeMake(90, 90);
//1.2设置左右间距(注意如果给定间距,无法满足屏幕的宽度,设置无效)
flowLayout.minimumInteritemSpacing=10;
//1.3设置上下间距
flowLayout.minimumLineSpacing=20;
//1.4设置活动方向
flowLayout.scrollDirection=UICollectionViewScrollDirectionVertical;
//1.5设置Header
flowLayout.headerReferenceSize=CGSizeMake(self.bounds.size.width,100);
//1.6设置Footer
flowLayout.footerReferenceSize=CGSizeMake(self.bounds.size.width, 100);
//1.7设置内边距
flowLayout.sectionInset=UIEdgeInsetsMake(10, 10, 10, 10);
//2.创建集合视图
self.coll=[[UICollectionView alloc] initWithFrame:self.bounds collectionViewLayout:flowLayout];
//背景颜色默认黑色
self.coll.backgroundColor=[UIColor whiteColor];
//3.添加到页面
[self addSubview:self.coll];
***********************自定义CEll
//视图布局
-(void)addAllViews
{
//视图控件都要加载在contentView上
self.c_imageView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.contentView.bounds.size.width, self.contentView.bounds.size.height*0.8)];
self.c_imageView.backgroundColor=[UIColor redColor];
[self.contentView addSubview:self.c_imageView];
self.c_label=[[UILabel alloc] init];
self.c_label.frame=CGRectMake(CGRectGetMinX(self.c_imageView.frame), CGRectGetMaxY(self.c_imageView.frame),self.contentView.bounds.size.width, self.contentView.bounds.size.height*0.2);
self.c_label.backgroundColor=[UIColor cyanColor];
[self.contentView addSubview:self.c_label];
}
//
-(void)layoutSubviews
{
[super layoutSubviews];
self.c_imageView.frame=CGRectMake(0, 0, self.contentView.bounds.size.width, self.contentView.bounds.size.height*0.8);
self.c_label.frame=CGRectMake(CGRectGetMinX(self.c_imageView.frame), CGRectGetMaxY(self.c_imageView.frame),self.contentView.bounds.size.width, self.contentView.bounds.size.height*0.2);
}
**********************************
#import "RootViewController.h"
#import "RootView.h"
#import "Mycell.h"
//标识
#define kcollCell @"collCell"
#define kHeaderView @"headerView"
#define kFooterView @"footerView"
//4.遵循集合视图的代理,数据协议
@interface RootViewController ()<UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout>
//FlowLayout不需要设置代理
@property(nonatomic,strong)RootView *rv;
@end
@implementation RootViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
self.rv=[[RootView alloc] initWithFrame:[UIScreen mainScreen].bounds];
}
return self;
}
-(void)loadView
{
self.view=self.rv;
}
- (void)viewDidLoad
{
[super viewDidLoad];
//5.设置代理
self.rv.coll.dataSource=self;
self.rv.coll.delegate=self;
// Do any additional setup after loading the view.
//6.注册cell
[self.rv.coll registerClass:[Mycell class] forCellWithReuseIdentifier:kcollCell];
}
//每个分组多少个
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 102;
}
//返回cell
// The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
//7.创建cell(改为自己的cell)
Mycell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:kcollCell forIndexPath:indexPath];
cell.c_imageView.image=[UIImage imageNamed:@"1347722492473[1].jpg"];
cell.c_label.text=@"妞儿";
//注册header
[self.rv.coll registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:kHeaderView];
//注册footer
[self.rv.coll registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:kFooterView];
float red=arc4random()%256/255.0;
float green=arc4random()%256/255.0;
float blue=arc4random()%256/255.0;
cell.backgroundColor=[UIColor colorWithRed:red green:green blue:blue alpha:0.5];
return cell;
}
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"section: %d,row:%d",indexPath.section,indexPath.row);
}
//设置header和footer
-(UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
if (kind==UICollectionElementKindSectionHeader) {
UICollectionReusableView *header=[collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:kHeaderView forIndexPath:indexPath];
UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
label.backgroundColor=[UIColor blueColor];
[header addSubview:label];
label.text=@"哈哈";
header.backgroundColor=[UIColor redColor];
return header;
}
else
{
UICollectionReusableView *footer=[collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:kFooterView forIndexPath:indexPath];
footer.backgroundColor=[UIColor redColor];
return footer;
}
}
//
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row%2) {
return CGSizeMake(90, 90);
}
else
{
return CGSizeMake(60, 60);
}
}
//内边距
-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
if (section==0) {
return UIEdgeInsetsMake(10, 10, 10, 10);
}
else
{
return UIEdgeInsetsMake(90, 90, 90, 90);
}
}
//上下间距
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
if(section==0)
{
return 10;
}
else
{
return 20;
}
}
//左右间距
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
return 10;
}
//
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section
{
return CGSizeMake(200,100 );
}
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section
{
return CGSizeMake(200, 100);
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
UICollectionView 集合视图用法,自定义Cell的更多相关文章
- UICollectionView集合视图的概念
如何创建UICollectionView 集合视图的布局UICollectionViewFlowLayout 自定义cell 布局协议UICollectionViewDelegateFlowLayou ...
- UICollectionView 集合视图 的使用
直接上代码: // // RootViewController.m // // #import "RootViewController.h" #import "Colle ...
- UI学习笔记---第十一天UITableView表视图高级-自定义cell
自定义cell,多类型cell混合使用,cell自适应高度 自定义cell就是创建一个UITableViewCell的子类 把cell上的空间创建都封装在子类中,简化viewController中的代 ...
- UICollectionView(集合视图)以及自定义集合视图
一.UICollectionView集合视图 其继承自UIScrollView. UICollectionView类是iOS6新引进的API,用于展示集合视图,布局 ...
- iOS:集合视图UICollectionView、集合视图控制器UICollectionViewController、集合视图单元格UICollectionViewCell(创建表格的另一种控件)
两种创建表格方式的比较:表格视图.集合视图(二者十分类似) <1>相同点: 表格视图:UITableView(位于storyboard中,通过UIViewController控制器实现 ...
- swift:创建集合视图UICollectionView
swift中创建集合视图和OC中差不多,主要是实现UICollectionViewDataSource数据源协议和UICollectionViewDelegateFlowLayout自定义布局协议,其 ...
- IOS开发中UITableView(表视图)的滚动优化及自定义Cell
IOS开发中UITableView(表视图)的滚动优化及自定义Cell IOS 开发中UITableView是非常常用的一个控件,我们平时在手机上看到的联系人列表,微信好友列表等都是通过UITable ...
- List<T>集合的Sort自定义排序用法简单解析
List<T>集合的Sort自定义排序用法简单解析: 如下:一系列无序数字,如果想要他们倒序排列,则使用如下代码: 那么如何理解这段代码呢? (x,y)表示相邻的两个对象,如果满足条件:x ...
- 集合视图UICollectionView 介绍及其示例程序
UICollectionView是一种新的数据展示方式,简单来说可以把它理解成多列的UITableView.如果你用过iBooks的话,可 能你还对书架布局有一定印象,一个虚拟书架上放着你下载和购买的 ...
随机推荐
- WordPress插件制作笔记(三)---Stars Comments Article
wp 文章星级评价 插件 下载地址4:http://pan.baidu.com/s/1eQnGIGU [articles_star_vote_score_optiontable_serialize_c ...
- StringBuilder是不是线程安全的?
测试条件: 开启2个并行执行任务,往同一个StringBuilder对象写入值 测试代码: ; static StringBuilder sbIsThreadSafe = new StringBuil ...
- WEB.xml配置文件解读
1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...
- samba(转)
配置虚拟机和主机之间的文件共享之所以配置虚拟机和主机之间的文件共享,是因为我们用惯了WINDOWS操作系统下的很多工具,比如编辑工具UltraEdit,souce insight等.我们可以在wind ...
- 【转】arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
原文网址:http://www.veryarm.com/296.html 命名规则 交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi] arch - 体系架 ...
- Android中调用C++函数的一个简单Demo
这里我不想多解释什么,对于什么JNI和NDK的相关内容大家自己去百度或谷歌.我对Android的学习也只是个新手.废话少说直接进入正题. 一.在Eclipse中创建一个Android Applicat ...
- 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)
摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网 ...
- IOS 下雪动画修改版本
#define SNOW_IMAGENAME @"snow" #define IMAGE_X arc4random()%(int)Main_Screen_Width #define ...
- [转]Traceroute网络排障实用指南(1)
注:本文是同事的大作,虽是翻译的一篇英文PPT,但内容实在精彩,小小的Traceroute竟包含如此大的信息量,真是让人感慨!内容不涉及公司机密,所以一直想转到自己的Blog上来,自己需要时可以再翻阅 ...
- 九度OnlineJudge之1032:ZOJ
题目描述: 读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出. 输入: 题目包含多组用例,每组用例占一行,包含ZOJ三个 ...