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
  • 相关阅读:
    ado GetRows
    mysql数据库学习——2,数据库的选定,创建,删除和变更
    mysql数据库学习——4,完整性约束
    mssql数据集操作方法
    mysql数据库学习——1,获取原数据
    mysql书籍
    php学习——smarty
    mysql数据库学习——5,数据类型,字符集和校对
    phpcms——评论内容字符控制
    phpcms权限问题,父栏目权限应用到子栏目不管用
  • 原文地址:https://www.cnblogs.com/liuguan/p/5023655.html
Copyright © 2011-2022 走看看