UICollectionView基础

前言

这个控件,看起来与UITableView有点像,而且基本的用法也很相像哦!!!

我们来看看API:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#pragma mark - UICollectionViewDataSource

// 指定Section个数

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {

return 3;

}

// 指定section中的collectionViewCell的个数

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {

return 10;

}

// 配置section中的collectionViewCell的显示

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CellIdentifier" forIndexPath:indexPath];

cell.backgroundColor = [UIColor redColor];

cell.textLabel.text = [NSString stringWithFormat:@"(%ld %ld)", indexPath.section, indexPath.row];

return cell;

}

看看直线布局的API:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

#pragma mark - UICollectionViewDelegateFlowLayout

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

return CGSizeMake(self.view.frame.size.width / 3 - 10, self.view.frame.size.width / 3 - 10);

}

// 设置每个cell上下左右相距

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {

return UIEdgeInsetsMake(5, 5, 5, 5);

}

// 设置最小行间距,也就是前一行与后一行的中间最小间隔

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section {

return 10;

}

// 设置最小列间距,也就是左行与右一行的中间最小间隔

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section {

return 10;

}

// 设置section头视图的参考大小,与tableheaderview类似

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section {

return CGSizeMake(self.view.frame.size.width, 40);

}

// 设置section尾视图的参考大小,与tablefooterview类似

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section {

return CGSizeMake(self.view.frame.size.width, 40);

}

如果是固定的,可以使用全局属性:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

NS_CLASS_AVAILABLE_IOS(6_0) @interface UICollectionViewFlowLayout : UICollectionViewLayout

@property (nonatomic) CGFloat minimumLineSpacing;

@property (nonatomic) CGFloat minimumInteritemSpacing;

@property (nonatomic) CGSize itemSize;

@property (nonatomic) CGSize estimatedItemSize NS_AVAILABLE_IOS(8_0); // defaults to CGSizeZero - setting a non-zero size enables cells that self-size via -perferredLayoutAttributesFittingAttributes:

@property (nonatomic) UICollectionViewScrollDirection scrollDirection; // default is UICollectionViewScrollDirectionVertical

@property (nonatomic) CGSize headerReferenceSize;

@property (nonatomic) CGSize footerReferenceSize;

@property (nonatomic) UIEdgeInsets sectionInset;

@end

常用到的代理方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

#pragma mark - UICollectionViewDelegate

// 允许选中时,高亮

- (BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath {

NSLog(@"%s", __FUNCTION__);

return YES;

}

// 高亮完成后回调

- (void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath {

NSLog(@"%s", __FUNCTION__);

}

// 由高亮转成非高亮完成时的回调

- (void)collectionView:(UICollectionView *)collectionView didUnhighlightItemAtIndexPath:(NSIndexPath *)indexPath {

NSLog(@"%s", __FUNCTION__);

}

// 设置是否允许选中

- (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath {

NSLog(@"%s", __FUNCTION__);

return YES;

}

// 设置是否允许取消选中

- (BOOL)collectionView:(UICollectionView *)collectionView shouldDeselectItemAtIndexPath:(NSIndexPath *)indexPath {

NSLog(@"%s", __FUNCTION__);

return YES;

}

// 选中操作

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {

NSLog(@"%s", __FUNCTION__);

}

// 取消选中操作

- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath {

NSLog(@"%s", __FUNCTION__);

}

时间: 2024-12-25 11:04:30

UICollectionView基础的相关文章

UICollectionView基础教学

相信了解UICollectionView的也一定听过瀑布流吧,开始之前先提供两个瀑布流,有时间的可以深入研究研究 https://github.com/dingpuyu/WaterFall https://github.com/zhangsuya/SYStickHeaderWaterFall 直接上代码吧,里面有注释,工程效果图: 文件目录: 思路步骤: 1.创建RootViewController,将RootViewController作为Window的根视图:代码的实现在AppDelegat

UICollectionView基础用法

#import "ViewController.h" #define kScreenSize [UIScreen mainScreen].bounds.size //遵守协议 @interface ViewController () <UICollectionViewDataSource,UICollectionViewDelegate> {     UICollectionView *_collectionView;      } @property (nonatomic

iOS UICollectionView基础

转载自:http://www.cnblogs.com/wayne23/p/4013522.html 初始化部分: UICollectionViewFlowLayout *flowLayout= [[UICollectionViewFlowLayout alloc]init]; self.myCollectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(20, 20, 250, 350) collectionViewLayo

java web 开发三剑客 -------电子书

Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知Internet的目的是让各个net交互.所以,Internet实质上是将世界上各个国家.各个网络运营商的多个网络相互连接构成的一个全球范围内的统一网,使各个网络之间能够相互到达.各个国家和运营商构建网络采用的底层技术和实现可能各不相同,但只要采用统一的上层协议(TCP/IP)就可以通过Internet

IOS基础_ UICollectionView的简单使用

和表格视图类似 UICollectionView的使用有两种方法 一种是继承UICollectionViewController,这个Controller会自带一个UICollectionView: 另外一种是创建一个UIConllectionView 视图放在普通的UIViewController里面. 我们用第二种 首先声明先声明一个重用标示  和实现委托 #define _CELL @"acell" @interface yxpViewController ()<UICol

iOS UI基础-19.0 UICollectionView

直接上代码,说明请看注释吧 1.继承三个代理 UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout 2.直接看代码 #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDi

UICollectionView基本使用详解(OC)

概述 UICollectionView是从iOS6开始引入使用的,目前应用非常广泛,很牛逼!老外的博客也是这么说的(传送门) ## 与UITableView的初步比较 UITableView应该是大家最熟悉的控件了,UICollectionView的使用与之类似,但又有所区别,如下介绍.相同点: 1.都是通过datasource和delegate驱动的(datasource和delegate官方文档传送),因此在使用的时候必须实现数据源与代理协议方法; 2.性能上都实现了循环利用的优化. 不同点

Swift:用UICollectionView整一个瀑布流

本文的例子和Swift版本是基于Xcode7.2的.以后也许不知道什么时候会更新. 我们要干点啥 用新浪微博的Open API做后端来实现我们要提到的功能.把新浪微博的内容,图片和文字展示在collection view中.本文只简单的展示内容.下篇会用pinterest一样的效果来展示这些内容. 我们准备优先展示图片.你的好友花了那么多时间拍照或者从相册里选择图片发上来多不容易.如果微博返回的数据中有中等大小的缩略图,那么久展示这个缩略图.否则的话显示文本.文本都没有的话...这个就不是微博了

UICollectionView学习总结

1?? UICollectionView与UITableView的区别:布局 UICollectionView与UITableView的共同点:循环利用 —> UITableView继承UISCrollView 注意:          —> UICollectionView 初始化必须要传入布局 UICollectionViewLayout UICollectionViewFlowLayout 流水布局:九宫格布局 —> UICollectionViewCell必须要注册