博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS UICollectionView简单使用
阅读量:6371 次
发布时间:2019-06-23

本文共 5637 字,大约阅读时间需要 18 分钟。

首先认识一下UICollectionView

NS_CLASS_AVAILABLE_IOS(6_0) @interface UICollectionView : UIScrollView

 

UICollectionView 和 UICollectionViewController 类是iOS6 新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局,用法类似于UITableView 和 UITableViewController 类。

使用UICollectionView 必须实现UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout这三个协议。

 

下面给出一些常用方法,具体的使用可以参考Demo:  苹果官方Demo:

- (void)viewDidLoad  {      [super viewDidLoad];      self.title = @"UICollectionView学习";            //通过Nib生成cell,然后注册 Nib的view需要继承 UICollectionViewCell      [self.collectionView registerNib:[UINib nibWithNibName:@"SQCollectionCell" bundle:nil] forCellWithReuseIdentifier:kcellIdentifier];            //注册headerView Nib的view需要继承UICollectionReusableView      [self.collectionView registerNib:[UINib nibWithNibName:@"SQSupplementaryView" bundle:nil] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:kheaderIdentifier];      //注册footerView Nib的view需要继承UICollectionReusableView      [self.collectionView registerNib:[UINib nibWithNibName:@"SQSupplementaryView" bundle:nil] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:kfooterIdentifier];      //      self.collectionView.allowsMultipleSelection = YES;//默认为NO,是否可以多选        }    - (void)didReceiveMemoryWarning  {      [super didReceiveMemoryWarning];      // Dispose of any resources that can be recreated.  }  #pragma mark -CollectionView datasource  //section  - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView  {      return 2;  }  //item个数  - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section  {      return 6;        }    // The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath:  - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath  {      //重用cell      UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kcellIdentifier forIndexPath:indexPath];      //赋值      UIImageView *imageView = (UIImageView *)[cell viewWithTag:1];      UILabel *label = (UILabel *)[cell viewWithTag:2];      NSString *imageName = [NSString stringWithFormat:@"%ld.JPG",(long)indexPath.row];      imageView.image = [UIImage imageNamed:imageName];      label.text = imageName;            cell.backgroundColor = [UIColor redColor];      return cell;        }  // The view that is returned must be retrieved from a call to -dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath:  - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{            NSString *reuseIdentifier;      if ([kind isEqualToString: UICollectionElementKindSectionFooter ]){          reuseIdentifier = kfooterIdentifier;      }else{          reuseIdentifier = kheaderIdentifier;      }            UICollectionReusableView *view =  [collectionView dequeueReusableSupplementaryViewOfKind :kind   withReuseIdentifier:reuseIdentifier   forIndexPath:indexPath];            UILabel *label = (UILabel *)[view viewWithTag:1];      if ([kind isEqualToString:UICollectionElementKindSectionHeader]){          label.text = [NSString stringWithFormat:@"这是header:%d",indexPath.section];      }      else if ([kind isEqualToString:UICollectionElementKindSectionFooter]){          view.backgroundColor = [UIColor lightGrayColor];          label.text = [NSString stringWithFormat:@"这是footer:%d",indexPath.section];      }      return view;  }  //定义每个UICollectionViewCell 的大小  - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath  {      return CGSizeMake(60, 80);  }  //定义每个Section 的 margin  -(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section  {      return UIEdgeInsetsMake(15, 15, 5, 15);//分别为上、左、下、右  }  //返回头headerView的大小  -(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{      CGSize size={
320,45}; return size; } //返回头footerView的大小 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section { CGSize size={
320,45}; return size; } //每个section中不同的行之间的行间距 - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { return 10; } //每个item之间的间距 //- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section //{ // return 100; //} //选择了某个cell - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath]; [cell setBackgroundColor:[UIColor greenColor]]; } //取消选择了某个cell - (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath { UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath]; [cell setBackgroundColor:[UIColor redColor]]; }

 

效果图如下:

转载于:https://www.cnblogs.com/yulang314/p/5061153.html

你可能感兴趣的文章
区块链技术将如何适用于企业业务
查看>>
为了OCP英特尔拼了,一大波新科技正在路上
查看>>
前白宫反恐首席顾问:NSA可以破解圣贝纳迪恐怖份子所有的iPhone
查看>>
Java最小堆解决TopK问题
查看>>
100万的大数据人才缺口,谁来解决?
查看>>
商标转让和域名转让的区别是什么?
查看>>
《数值分析(原书第2版)》—— 1.1 二分法
查看>>
Instor公司发布一款免费的数据中心成本估算工具
查看>>
公交监控系统之弊须有人出来认头
查看>>
STiD推出两款UHF RFID标签,适用于航空航天、石油等行业
查看>>
注意五大问题,避免CRM低效问题
查看>>
物联网将如何塑造未来的网络
查看>>
大连应探索适合智慧城市建设运营模式
查看>>
对Gartner发布2017年十大技术趋势的分析
查看>>
宜城运用大数据严查惠民政策落实问题
查看>>
智能语音推动物联网应用落地
查看>>
Java 8的6个问题
查看>>
国家能源局亮配额制家底:弃光或缓解?
查看>>
Qt之高级网络操作(HTTP/FTP快速上手)
查看>>
《Hadoop集群与安全》一1.1 选择Hadoop集群硬件
查看>>