UICollectionViwe的基本使用

2020-04-05  本文已影响0人  小热带雨林
collectionView的使用于UITableView的使用类似,但是collectionview没有表头与表尾,只有组头与组尾,同时在设置items的size时需要使用flowLayout进行设置,同时也可以通过UICollectionViewDelegateFlowLayout中的代理方法设置每一个行的组头与组尾的高度

1.创建flowLayout

- (void)prepareLayout{
    [super prepareLayout];
    self.scrollDirection = UICollectionViewScrollDirectionVertical;
    self.minimumLineS
    pacing = 1;//跟滚动方向相同的间距
    self.minimumInteritemSpacing = 1;//跟滚动方向垂直的间距
    self.sectionInset = UIEdgeInsetsMake(0, 0, 20, 0);
}

2.注册cell,同tableView一样,有几种cell就注册几种cell
3.根据需求注册headerViwe与footerView

   [collectionView registerClass:[GGAutoCollectionHeaderView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:headerCellID];
   [collectionView registerClass:[GGAutoCollectionFooterView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:footerCellID];

注意组头与组尾视图都是继承UICollectionReusableView

@interface GGAutoCollectionHeaderView : UICollectionReusableView

4.设置组头与组尾的高度可以根据layout进行设置

  ZFBBusinessTypeLayout *layout = [[ZFBBusinessTypeLayout alloc]init];
    //设置组头组尾的高度
  layout.headerReferenceSize = CGSizeMake(CGRectGetWidth(self.frame), 20); 
   layout.footerReferenceSize = CGSizeMake(CGRectGetWidth(self.frame), 20);

5.或者使用代理方法设置组头与组尾的高度

//以下方法是在UICollectionViewDelegateFlowLayout中
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
    if(section == 0)
        return CGSizeMake(CGRectGetWidth(self.frame), 220);
    return CGSizeMake(CGRectGetWidth(self.frame), 10);
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section{
    if(section == 0)
          return CGSizeMake(CGRectGetWidth(self.frame), 220);
      return CGSizeMake(CGRectGetWidth(self.frame), 10);
}

6.添加组头与组尾 (组尾同下)

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{
    if([kind isEqualToString:UICollectionElementKindSectionHeader]){
    if(indexPath.section == 0){
        GGTopReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:headerID forIndexPath:indexPath];
        return headerView;
    }
    GGTopReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:headerID forIndexPath:indexPath];
    headerView.delegate = self;
    return headerView;
}
上一篇下一篇

猜你喜欢

热点阅读