iOSUICollectionView简单使用

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

首先认识一下UICollectionView[objc] view plaincopy

NS_CLASS_AVAILABLE_IOS(6_0) @interface UICollectionView : UIScrollView

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

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

下面给出一些常用方法,具体的使用可以参考Demo:点我下载 苹果官方Demo:点我下载[objc] view plaincopy

- (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]]; }

效果图如下:

原文链接:http://blog.csdn.net/Apple_app/article/details/38867123

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航