zoukankan      html  css  js  c++  java
  • collectionView

     1 //
     2 /*
     3  UICollectionView 类是iOS6 新引进的API,用于展示集合视图,
     4  布局更加灵活,可实现多列布局,用法类似于UITableView类。
     5  - 更新视图:    [collectionView reloadData];
     6  - 自定义UICollectionViewCell,与自定义tableViewCell基本一致
     7  */
     8 
     9 #import "ViewController.h"
    10 
    11 @interface ViewController ()<UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout>
    12 
    13 @end
    14 
    15 @implementation ViewController
    16 
    17 - (void)viewDidLoad {
    18     [super viewDidLoad];
    19     UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:self.view.bounds collectionViewLayout:[[UICollectionViewFlowLayout alloc]init]];//创建collectionView,要指定layout
    20     collectionView.backgroundColor = [UIColor grayColor];
    21     [collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cell"];//注册UICollectionViewCell的重用标识,也就是下面我们要使用的cell
    22     [collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header"];//注册头视图(每组)
    23     //    [collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"remnant"];//注册尾视图
    24     collectionView.delegate = self;
    25     collectionView.dataSource = self;
    26     [self.view addSubview:collectionView];
    27 }
    28 //几个代理方法
    29 - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
    30 {
    31     return 10;//设置组数
    32 }
    33 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
    34 {
    35     return 8;//设置每组单元数,过多会自动换行
    36 }
    37 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    38 {
    39     //设置cell,注意,此处使用的identifier必须与之前注册的保持一致
    40     static NSString *identifier = @"cell";
    41     UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
    42     cell.backgroundColor = [UIColor blueColor];
    43 //    cell.selectedBackgroundView = nil;设置选中视图
    44     cell.layer.borderWidth = 0.5;
    45     cell.layer.borderColor = [UIColor redColor].CGColor;
    46     return cell;
    47 }
    48 //如果想要使用头视图,则必须实现该方法
    49 -(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
    50     //设置每组头视图的尺寸
    51     return CGSizeMake(100, 30);
    52 }
    53 -(UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{
    54     NSLog(@"%s",__FUNCTION__);
    55     //设置头/根视图,注意,此处的withReuseIdentifier要与之前注册时使用的完全一致(注意重用机制导致的bug)
    56     UICollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header" forIndexPath:indexPath];
    57     headerView.backgroundColor = [UIColor orangeColor];
    58     [headerView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
    59     UILabel *lable = [[UILabel alloc]initWithFrame:headerView.bounds];
    60     lable.text = [NSString stringWithFormat:@"%zi组的头视图",indexPath.section];
    61     lable.textColor = [UIColor blueColor];
    62     [headerView addSubview:lable];
    63     return headerView;
    64 }
    65 - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
    66 {
    67     //否单元被点击
    68     NSLog(@"%zi组,%zi列",indexPath.section,indexPath.item);
    69 }
    70 -(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
    71     //设置item(视图元素)的尺寸
    72     return CGSizeMake(100, 100);
    73 }
    74 -(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{
    75     //设置组的边距(上、左、下、右)
    76     return UIEdgeInsetsMake(1, 0, 1, 0);
    77 }
    78 -(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{
    79     //两个item的列间距
    80     return 0;
    81 }
    82 
    83 -(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section{
    84     //如果一组中有多行item,设置行间距
    85     return 0;
    86 }
    87 //-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
    88 //    //设置每组尾视图的尺寸
    89 //    return CGSizeMake(100, 20);
    90 //}
    91 - (void)didReceiveMemoryWarning {
    92     [super didReceiveMemoryWarning];
    93     // Dispose of any resources that can be recreated.
    94 }
    95 
    96 @end
  • 相关阅读:
    Python使用SMTP模块、email模块发送邮件
    harbor搭建及使用
    ELK搭建-windows
    ELK技术栈之-Logstash详解
    【leetcode】1078. Occurrences After Bigram
    【leetcode】1073. Adding Two Negabinary Numbers
    【leetcode】1071. Greatest Common Divisor of Strings
    【leetcode】449. Serialize and Deserialize BST
    【leetcode】1039. Minimum Score Triangulation of Polygon
    【leetcode】486. Predict the Winner
  • 原文地址:https://www.cnblogs.com/liuguan/p/5023655.html
Copyright © 2011-2022 走看看