UI基础(八)之collectionView的认识和使用
1. UICollectionView默认背景颜色就是黑的
颜色改为白色之后<就是一个空白的界面
2. UICollectionView显示数据,UITableView基本一致
3. 一个UICollectionViewCell所展现的样式,事实上是由内部的UICollectionViewFlowLayout进行决定的
在垂直滚动时,头View的宽度 就是collectionView的宽度,它的宽度由系统决定,如果我们自己设置宽度的话,是没有效果,只有高度是有效果
设置cell之间的间距时一定要注意(item之间的间距)
注意: 在我们自己写九宫格算法的时候,一行上显示多少个控件,是由我们自己指定的
当时当使用UICollectionView的时候,它一行上显示多少个控件,是系统自己计算的
它计算的规则在于 根据item的大小意见间距去计算界面上显示多少个控件,这个时候一定要注意: 设置的是cell间最小间距,在排列时,如果发现item在一行上展现不开时,它就会把多出来的item给放在下一行,而上一行item之间的间距,它就会做一个等分,(拉伸间距)
所以在使用UICollectionView的时候一定要注意: item的大小和间距,按照最小分辨率的屏幕进行设置
3.5英寸
4. UICollectionView滚动方向不同会有一定的差异
1. 排列方式
垂直滚动: 从左到右
水平滚动: 从上到下
2. 间距
垂直滚动和水平滚动
cell的间距和行间距是不同的
3. 头尾view
垂直滚动: 头View宽由系统设定 ,只有高度起作用
水平滚动: 头View宽会起作用 高度由系统指定
5. 组头组尾 页眉页脚
默认设置高度是有效果的,但是里面的内容不显示,想要显示,需要做处理
想要显示内容:需要设置代理方法
下面链接是关于collectionView的介绍,做个理解.
http://blog.csdn.net/vbirdbest/article/details/50720915
重点掌握:相册效果和瀑布流(不管用不用得到,其实是对UIcollectionView的一个深入了解,所以必须掌握)
1.自定义layout的六个方法:
#import "HMMyLayout.h" @implementation HMMyLayout //这个方法,在是布局搭建前运行的,只会运行一次 //搭建布局的准备工作,可以放在这里 - (void)prepareLayout{ NSLog(@"%s",__func__); } /** * 返回对应区域内,控件的属性,默认返回的就是界面中可以看到的 * * @param rect CGRect --> x y w h 四个信息 * * @return NSArray数组-->对应控件的属性(所有控件都有的) */ -(NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect{ NSLog(@"%s",__func__); return [super layoutAttributesForElementsInRect:rect]; } /** * 根据索引,返回具体某一个item中控件的属性 * * @param indexPath 索引 系统默认不会调用,提供给开发者使用,由开发者调用 * * @return 单独控件的属性 */ - (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath{ NSLog(@"%s",__func__); return [super layoutAttributesForItemAtIndexPath:indexPath]; } /** * 返回控件可以滚动的区域 */ - (CGSize)collectionViewContentSize{ return [super collectionViewContentSize]; } //如果在界面滚动的过程中,对应看到的控件的大小,需要随着界面的滚动而产生变化,那么就返回YES // 否则就返回NO - (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds{ NSLog(@"%s",__func__); return [super shouldInvalidateLayoutForBoundsChange:newBounds]; } /** * 滚动快要停止的时候调用, * * @param proposedContentOffset 滚动的偏移值(界面要停止的位置) * @param velocity 速率 用户对界面的操作 基本用不到 * * @return 返回的就是界面最终停止的位置 */ - (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity{ NSLog(@"%s",__func__); return [super targetContentOffsetForProposedContentOffset:proposedContentOffset withScrollingVelocity:velocity]; } @end