您的位置:首页 > 产品设计 > UI/UE

8.UIVollectionView

2016-03-23 11:19 501 查看
1.UICollectionView的简单介绍
1.1 UICollectionView默认的背景颜色是黑的,
而在stroyboard中显示白色,实际效果和视图界面中不一致

1.2注意:
1.2.1 以后使用UICollectionView,第一步先设置背景颜色
1.2.2 它默认的界面就是空白的,没有任何内容
1.2.3显示内容,和UITableView非常类似
1.设置数据源的代理
1.1代码设置 view.dataSource = self
1.2拖线
2.实现数据源的协议
3.实现方法
1.2.4 UICollectionView它的Cell默认只能从原型cell中进行加载

1.3对item设置的时候一定要注意:
一行上展现的item的个数,它是由系统计算获取的,没有办法进行具体个数设置,在设置属性的使用
CellSize 和 MinSpacing设置一定要谨慎
这里设置的是MinSpacing因为这个间距会根据一行展现控件个数而变化
在开发中如果使用UIcollectionViewCell,设置间距和CellSize的时候
,按照最小尺寸的屏幕进行设定
开发中按照3.5英寸进行设定

2.
代码方式创建
注意点:
2.1在UITableView中创建的时候分为普通样式和分组样式,这个样式是在初始化的时候就已经设定了
在UICollectionView同样道理,它也有自己样式,并且必须在初始化的时候进行设定
默认UICollectionView它的样式是通过layout进行设定的,layout中默认有两种样式
flow 流水 custom自定义

必须在初始化的时候,进行设置layout
UICollectionView *collectionView =[[UICollectionView alloc]initWithFrame:CGRectZerocollectionViewLayout:flowLayout];

2.2注册cell
[collectionViewregisterClass:[UICollectionViewCell class] forCellWithReuseIdentifier:resueId];

2.3 cell的设置,是通过layout进行设置的

//设置cell的大小
flowLayout.itemSize = CGSizeMake(100, 100);

//设置距离屏幕的间距
flowLayout.sectionInset =UIEdgeInsetsMake(20, 20, 20, 20);

//设置item与item之间的间距
flowLayout.minimumInteritemSpacing = 10;

//设置行与行之间的间距
flowLayout.minimumLineSpacing = 30;

UICollectionView它行间距以及item间距没有代理方法设置,只能通过layout的属性进行设置
在初始化的时候就固定了,后面没有办法动态改变

3.
搭建界面的三种方式
1. stroyboard
2.
代码
3. xib

使用xib的方式创建cell,需要掌握的知识
3.1.1 注册xib文件
//第一个参数:代表nib文件的名字
//第二个代表路径:只需要把mainBundle给它就可以
UINib *nib = [UINibnibWithNibName:@"CZCollectionViewCell" bundle:[NSBundle mainBundle]];

//一个参数根据Nib文件的名字获取一个UINib的对象
//第二个参数重用的标识
[self.collectionView registerNib:nibforCellWithReuseIdentifier:resuId];

3.1.2 xib中设置cell的宽高是无效的
需要通过layout进行设置
itemSize

4.UICollectionViewController的使用
4.1
//在UITableViewControlelr中self.view
==self.tableView
//而在UICollectionViewController中self.view
!=self.collectionView
NSLog(@"self.view -- %@--",self.view);

NSLog(@"self.collectionView -- %@--",self.collectionView);

4.2 item点击事件的响应
事件响应,在delegate代理中
- (void)collectionView:(UICollectionView*)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

4.3 collectionView的滚动方向,只能设置一个方向,不能设置多个方向
4.3.1 item的排列方式,受collectionView的滚动方向所影响
4.3.2设置最小的间隔minSpacing也受滚动方向影响
4.3.2垂直滚动,头标签和尾标签宽度无效果—>屏幕宽度
4.3.3水平滚动,头标签和尾标签高度无效果—>高度是屏幕的高度

4.4
设置按钮的点击状态
//让collectionView中的item不可以被点击
self.collectionView.allowsSelection = YES;

//让多个Item响应点击
self.collectionView.allowsMultipleSelection= YES;

5.
应用程序
复习,自动布局

复习代理
复习 ,cell重用问题

加载数据的时候,判断一下当前按钮是否被点击了,点击就被禁用,否则就显示
由于现在加载数据没有办法判断,就要想办法
由于跟数据相关,而这个数据就是CZApp
CZApp中加一个成员属性用来判断它是否可以被点击

6.
动态加载
6.1从广义上来说,就是根据一个条件,去判断改加载什么东西
6.2从狭义上来说,系统选择加载的库,根据一定条件进行选择
6.3动态加载动态运行虚拟器的一个运行时的判断

动态加载数据
动态数据加载:
根据一定的条件 ,让加载的数据发生变化,就是动态加载数据;

7.页头和页尾(组头和组尾)
1.组头组尾,使用的是同一个控件UICollectionReusableView
2.默认高度起作用,但是控件属性都没有任何作用
想要使用,需要实现UICollectionView的数据源方法
- (UICollectionReusableView*)collectionView:(UICollectionView *)collectionViewviewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath*)indexPath

3.
在使用的时候要注意
头尾需要进行设置重用标识,而标识是不一样的,所以要根据头尾的标识进行判断
//想找kind需要到 UICollectionViewFlowLayout类中,最上方查找
// UIKIT_EXTERNNSString *const UICollectionElementKindSectionHeader NS_AVAILABLE_IOS(6_0);
//UIKIT_EXTERNNSString *const UICollectionElementKindSectionFooter NS_AVAILABLE_IOS(6_0);

4.头和尾,是自动重用的,根据一个标识

5.传入数据,需要注意:声明属性的方法,这个方法只有一个参数
而在UICollectionResuableView中,设置数据需要知道是头尾,所以要传入两个参数
所以这里只能定义方法,不能定义成员属性,

6.自定义的UIView要继承自UICollectionReusableView

8.代码创建控件重点
8.1.注意要注册class
8.2 重写初始化方法的关键,在于系统初始化控件会调用哪个方法
8.3 在UICollectionView中注册的cell与使用的不符,不匹配
8.4 要注意,在自定义控件中不能适用autolayout约束,否则会导致外面组的insets出问题
在cell中不能适用autolayout约束

瀑布流:
1.
界面展现的数据不规则
2.
数据无限加载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: