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.
数据无限加载
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.
数据无限加载
相关文章推荐
- 6.UITableView增强
- 5.UITableView使用 / 数据源 & 代理 / 行高 / TableViewCell 重用 / 索引栏
- 4.ScrollView常用属性,常用代理方法,图片轮播器,UIAlertView/UIActionSheet
- Bctf-pwn_ruin-re_lastflower
- win8 &win10系统下Guest 帐号本地主机登录
- skcatSgnisueueuQtnemelpmI.232
- iOS开发——UIImageView
- UITableView分割线从边框顶端开始
- Android Activity.runOnUiThread() 和 Handler
- 【学渣笔记】Xitrum Scala Web Framework Guide
- iOS UITableCell复用
- UIImageView的ContentMode属性
- Process 'command '**/ndk-build.cmd'' finished with non-zero exit value 1
- UIView的layoutSubviews和drawRect
- (转)Storm UI 解释
- marquee标签弹幕效果
- iOS-添加UINavigation
- dispatchTouchEvent
- QtQuick项目部署
- Java中Integer的valueOf方法,-128到127的整数将被缓存