IOS UICollectionView瀑布流 CHTCollectionViewWaterfallLayout用法
阿新 • • 發佈:2019-02-11
實現瀑布流的類要繼承的代理
<UICollectionViewDelegate, UICollectionViewDataSource,CHTCollectionViewDelegateWaterfallLayout>
CHTCollectionViewWaterfallLayout *layout = [[CHTCollectionViewWaterfallLayout alloc] init]; self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 20, 320, 460) collectionViewLayout:layout]; layout.sectionInset = UIEdgeInsetsMake(10, 15, 10, 15);//上下左右的間距 layout.minimumColumnSpacing = 5; //左右cell的間距 layout.minimumInteritemSpacing = 5;//上下cell的間距 layout.columnCount = 3; //3列, 根據列數,間距等,使每個cell的寬度固定 layout.headerHeight = 200; //類似tableView的heardview的高度 self.collectionView.dataSource = self; self.collectionView.delegate = self; //註冊cell [self.collectionView registerClass:[WaterFallCell class] forCellWithReuseIdentifier:CELL_IDENTIFIER]; //註冊headerview [self.collectionView registerClass:[HeadView class] forSupplementaryViewOfKind:CHTCollectionElementKindSectionHeader withReuseIdentifier:HEADER_IDENTIFIER]; //註冊footerView CHTCollectionElementKindSectionFooter self.collectionView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; self.collectionView.backgroundColor = [UIColor whiteColor]; [self.view addSubview:self.collectionView];
#pragma mark - UICollectionViewDataSource - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { return 1; } - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { UICollectionReusableView *reusableView = nil; if ([kind isEqualToString:CHTCollectionElementKindSectionHeader]) { reusableView = (HeadView*)[collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:HEADER_IDENTIFIER forIndexPath:indexPath]; } return reusableView; } - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { NSLog(@"self.imageList = %d", self.imageList.count); return self.imageList.count; } - (UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { WaterFallCell *cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:CELL_IDENTIFIER forIndexPath:indexPath]; cell.layer.masksToBounds = YES; cell.layer.cornerRadius = 5.0f; [cell.imageView sd_setImageWithURL:[NSURL URLWithString:[self.imageList objectAtIndex:indexPath.row]]]; return cell; } #pragma mark - UICollectionViewDelegate - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"indexs = %d", indexPath.row); } #pragma mark - CHTCollectionViewDelegateWaterfallLayout - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { return [self.cellSizes[indexPath.item] CGSizeValue]; }