UICollectionView可理解为多列的UITableView,也继承自UIScrollView,可以进行滑动,可以设治左右滑动或上下滑动。collectionViewLayout让UICollectionView的布局更灵活实用,且可编辑性更高。
UICollectionViewFloeLayout (自定义成为各种布局的关键)
minimumLineSpacing cell间距 这个是与你设置的滑动方向有关的,如果你设置上下滑动,那么这就是cell上下两个之间的最小间距,如果你设置成左右滑动,那么这就是cell左右之间的最小间距
minimumInteritemSpacing cell间距 这个与上面那个是相反的,如果你设置为上下滑动,那么这就是cell左右两个之间最小间距,反正亦然
注:这两个属性适合设定的滑动方向相关的,不是特指的行间距和列间距。minimumLineSpacing是指滑动方向上的两个cell之间的距离,minimumInteritemSpacing是指与滑动方向垂直的方向上的两个cell之间的距离。
itemSize cell的大小。
estimatedItemSize cell预测的大小。如果 UICollectionView 的 layout 是一个 UICollectionViewFlowLayout,只需要将 layout.itemSize = ... 改成 layout.estimatedItemSize = ...。collectionview 就会根据 cell 里面的 autolayout 约束去确定cell 的大小。(iOS8.0及以后)
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; }