• iOS基础教程-collectionView的应用


    相信,部分人用scrollerView做过,或者见过一组图片循环滚动的效果,还有一些,比较多的图片展示页面,这是如果还使用scrollerView的话,那么显然很不合理,比较麻烦,今天,就来介绍一种继承与UIScrollerView的控件,UICollertionView。

    较简单的用法,后期会作践完善

    ViewController.h 中

    #import <UIKit/UIKit.h>

     //此时,需要签署三个协议,代理,数据源 和 layout

    @interface ViewController : UIViewController<UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout>

    @end

    //  ViewController.m

    //  collection

    //

    //  Created by Mac on 15-7-23.

    //  Copyright (c) 2015年 Mac. All rights reserved.

    //

    #import "ViewController.h"

    @interface ViewController ()

    @end

    @implementation ViewController

    - (void)viewDidLoad {

        [super viewDidLoad];

        //初始化布局,创建layout,必须设置

        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];

    //设置内容滑动方向    

        layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;

    //设置垂直方向得最小距离

        layout.minimumInteritemSpacing = 10;

        //设置水平方向得最小距离

        layout.minimumLineSpacing = 10;

        //设置四周得边缘距离

        layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);

     //创建collectionView,并添加layout,必须添加

        UICollectionView *view = [[UICollectionView alloc]initWithFrame:self.view.frame collectionViewLayout:layout];

        

        [self.view addSubview:view];

        view.backgroundColor = [UIColor redColor];

        

     //签署代理和数据源

        view.delegate = self;

        view.dataSource = self;

        //注册单元格。  注册带xib的cell的方法不同

        [view registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"newTtem"];

        

      //组册组得头视图,可设置,可不设置

            [view registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"headView"];

            //组册组得尾视图,可设置,可不设置,若设置,则下面必须返回其大小

            [view registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footerView"];

    }

     注:若要显示组的头尾试图,需要返回layout方法里的头尾试图的大小。此处的头尾试图指的是组的头尾试图。-(CGSize)collection 开头的数据源代理。

    //创建组得个数

    - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{

        return 1;

    }

    //设置单元格的个数,在collectionView称其为item

    - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{

        

        return 40;

        

    }

    //创建item得内容

    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

        UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"newTtem" forIndexPath:indexPath];

        cell.backgroundColor = [UIColor orangeColor];

        return cell;

    }

    //代理方法事项单元格得大小,单元格显示的大小

    - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{

        return CGSizeMake(50, 50);

    }

    //创建完cell得内容后,仍要设置代理方法,返回头视图,和尾视图

    - (UICollectionReusableView*)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{

        if (kind == UICollectionElementKindSectionHeader) {

            

            

    UICollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"headView" forIndexPath:indexPath];

            headerView.backgroundColor = [UIColor purpleColor];

            

            return headerView;

        }

        

        UICollectionReusableView *footer = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"footerView" forIndexPath:indexPath];

        footer.backgroundColor = [UIColor redColor];

        

        return footer;

        

        

    }

    }

    #define mark单元格得点击方法

    - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{    

    }

    //设置初始时距左距离

    - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{

        return UIEdgeInsetsMake(0, 0, 0, 0);

    }

     //上面说过collectionView继承与ScrollerView,所以其代理方法也可使用

    //设置单元格将要结束拖动时调用

    - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{

        

    }

    @end

  • 相关阅读:
    COGS 859. 数列
    9.7noip模拟试题
    hash练习
    9.6noip模拟试题
    9.5noip模拟试题
    poj 2117 Electricity
    洛谷P1993 小 K 的农场(查分约束)
    9.2noip模拟试题
    洛谷 P1273 有线电视网(dp)
    面试题收集
  • 原文地址:https://www.cnblogs.com/zxh-iOS/p/4748032.html
Copyright © 2020-2023  润新知