• iOS UICollectionView简单使用


    首先认识一下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]];  
    }  

    效果图如下:

  • 相关阅读:
    概率图模型课堂笔记:2.4 取样方法
    概率图模型课堂笔记:2.2 置信度传播
    2018秋季学期学习总结
    人生路上影响最大的三位老师
    抓老鼠啊~亏了还是赚了?
    币值转换
    自我介绍
    打印沙漏
    2019春第七周作业
    第六周编程总结
  • 原文地址:https://www.cnblogs.com/yulang314/p/5061153.html
Copyright © 2020-2023  润新知