首页 > 学院 > 开发设计 > 正文

iOSUICollectionView简单使用

2019-11-14 18:30:22
字体:
来源:转载
供稿:网友

首先认识一下UICollectionView

NS_CLASS_AVAILABLE_IOS(6_0) @interface UICollectionView : UIScrollView  

 

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

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

 

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

[objc] view%20plaincopy
- (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

    上一篇:iOS开发日记4-第三方登录(ShareSDK)

    下一篇:iOS开发-UI篇-AutoLayout

    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表
    学习交流
    热门图片
    猜你喜欢的新闻
    猜你喜欢的关注

    新闻热点

    疑难解答

    图片精选

    网友关注