UICollectionView的headerView、footerView使用以及与UITableView加载headerView、footerView的区别

前序


最近在一家公司实习,学习一些ios的知识。因为以前没有使用过UICollectionView,所以带我的导师让我仿照公司APP中的一个UICollectionView自己做一个练练手。期间遇到了一些问题:我们知道我们一般在UITableView中只设置一个headerView与footerView,但是我在UICollection中使用的时候,出现了每个Section中都有一个headerView和footerView。其实这是正确的,并没有什么错误,只是不是我们想要的结果(我只想一个UICollectionView只有一个headerView和footerView),所以我们要做一些处理。

了解Section、indexPath、row的区别


row和section是在UITableView中定义的

UICollectionView的headerView、footerView使用以及与UITableView加载headerView、footerView的区别_第1张图片

indexPath.section:代表了单元格(Cell)的第几个分区

indexPath.row:代表分区的第几行

一定要理解上面这两个概念,因为这很重要。

一般情况下我们使用UICollectionView的时候并没有设置分区,我们只是使用一个分区,系统默认的也是一个分区。

UICollectionView的headerView、footerView使用以及与UITableView加载headerView、footerView的区别_第2张图片

正是因为只有一个分区,所以我们才会显示一个headerView和一个footerView。如果我们设置了几个分区的话,那么所有的分区都会有一个headerView和footerView。这里我就要说一下UICollectionView和UITableView加载headerView与footerView的区别。

UITableView加载headerView与footerView

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;

这里后面的参数是section;

UICollectionView加载headerView与footerView

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath;

这后面的参数是indexPath;

对于UITableView中headerView、footerView的加载方法网上已经有很多了,这里就不做介绍了!下面来说说UICollectionView的加载。


解决方案


正如上面说的,如果我们只有一个分区的话,那我们可以不用进行判断,但是当我们有几个分区的时候,我们要在加载headerView和footerView的时候加以判断。


UICollectionView的headerView、footerView使用以及与UITableView加载headerView、footerView的区别_第3张图片

你以为这样就可以了吗?如果你只是设置这个的话,那么你就错了,除此之外你还要设置布局代码。

UICollectionView的headerView、footerView使用以及与UITableView加载headerView、footerView的区别_第4张图片

结束语


以上就是本人的解决方案,也不知道理解的是否到位,希望您可以指出我的错误之处,大家一起相互学习。最后,谢谢您的观看。

你可能感兴趣的:(UICollectionView的headerView、footerView使用以及与UITableView加载headerView、footerView的区别)