UICollectionView 简单的使用和注意事项
UICollectionView 在创建的时候,要给它一个UICollectionViewFlowLayout (不然会崩溃),就像tableview一样,也要为它注册自定义的cell。
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init]; [flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical]; //cell间距 flowLayout.minimumInteritemSpacing = 10.0f; //cell行距 flowLayout.minimumLineSpacing = 20.0f; //1.添加FlowLayout UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:CGRectMake(0, 64, 320, [UIScreen mainScreen].bounds.size.height - 64) collectionViewLayout:flowLayout]; //2.为collection 注册cell(自定义的cell) [collectionView registerNib:[UINib nibWithNibName:@"CarCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"CarCollectionViewCell"];
还要为它设置代理和实现代理方法:
collectionView.backgroundColor = [UIColor whiteColor]; self.collectionView = collectionView; self.collectionView.delegate = self; self.collectionView.dataSource = self; [self.view addSubview:self.collectionView];
设置cell的大小:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { CGSize size = CGSizeMake(80, 100); return size; }
设置整体cell在collection中的上下左右边距:
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{ return UIEdgeInsetsMake(30, 20, 0, 20); }
在cellForItemAtIndexPath中使用自定义的cell,注意自定义cell的xib文件时,要加上identifier:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ CarCollectionViewCell *cell = (CarCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"CarCollectionViewCell" forIndexPath:indexPath]; ... ... ...
return cell; }