人一切的痛苦,本质上都是对自己的无能的愤怒。
目录
1.UICollectionView的基本概念
2.UICollectionViewFlowLayout的基本属性
3.UICollectionView的代理方法
UICollectionView的基本概念
- UICollectionView是一种新的数据展示方式,简单来说可以把他理解成多列的UITableView.
- UICollectionView也是UIScrollView的子类,因此也是可以滑动的,可以设置为左右滑动或者上下滑动,当然,由于有了collectionViewLayout,因此,他的布局是比较灵活的,实用性与可编辑性非常强。
UICollectionViewFlowLayout的基本属性
这是可以自定义成为各种布局的关键,有个UICollectionViewDelegateFlowLayout协议,可以实现各种布局,如圆形布局等,下篇文章会对自定义布局有详细介绍。
-
UICollectionViewFlowLayout的所有属性(建议多查看系统文档,这样出新东西了自学能力会强很多)
minimumLineSpacing cell间距 这个是与你设置的滑动方向有关的,如果你设置上下滑动,那么这就是cell上下两个之间的最小间距,如果你设置成左右滑动,那么这就是cell左右之间的最小间距
minimumInteritemSpacing cell间距 这个与上面那个是相反的,如果你设置为上下滑动,那么这就是cell左右两个之间最小间距,反正亦然
特别注意:这里的两个属性是和你的滑动方向有关的,不是和网上说的minimumLineSpacing是行距,minimumInteritemSpacing是列距,这种是不对的。和滑动方向有关!!!
itemSize cell的大小。
-
estimatedItemSize cell预测的大小。如果 UICollectionView 的 layout 是一个 UICollectionViewFlowLayout,只需要将 layout.itemSize = ... 改成 layout.estimatedItemSize = ...。collectionview 就会根据 cell 里面的 autolayout 约束去确定cell 的大小。(iOS8.0及以后)
- 原理:
1.collection view 根据 layout 的 estimatedItemSize 算出估计的 contentSize,有了 contentSize collection view 就开始显示
2.collection view 在显示的过程中,即将被显示的 cell 根据 autolayout 的约束算出自适应内容的 size
3.layout 从 collection view 里获取更新过的 size attribute
4.layout 返回最终的 size attribute 给 collection view
5.collection 使用这个最终的 size attribute 展示 cell
此处参考 :http://www.cocoachina.com/ios/20141218/10687.html
- 原理:
scrollDirection 滑动方向 默认是UICollectionViewScrollDirectionVertical 上下滑动。也可以设置为UICollectionViewScrollDirectionHorizontal左右滑动
headerReferenceSize 头部大小
footerReferenceSize 尾部大小
sectionInset距离上下左右的距离
sectionHeadersPinToVisibleBounds:设置是否当元素超出屏幕之后固定头部视图位置,默认NO(iOS9.0及以后)
sectionFootersPinToVisibleBounds:设置是否当元素超出屏幕之后固定尾部视图位置,默认NO(iOS9.0及以后)
UICollectionView代理方法
//返回多少个分组
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
//每组有多少个cell
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 40;
}
//每个位置显示哪个cell
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
cell.backgroundColor = [UIColor yellowColor];
return cell;
}
//点击cell之后执行的操作
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
}
//返回YES则可以移动cell的位置
//这个需要给cell添加手势,然后再在移动中交换cell位置 (下期会有介绍详细使用 及demo)
- (BOOL)collectionView:(UICollectionView *)collectionView canMoveItemAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
以上是UICollectionView的一个最基本的使用的介绍,下期会对这些做个小例子,然后如果文中有任何错误,欢迎指正。