zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    CF980E The Number Games
    UVALive 2995 Image Is Everything
    CF1148F Foo Fighters
    CF22E Scheme
    CF1045G AI robots
    学习笔记 并查集维护区间删除
    HEOI 十二省联考退役记
    立方网面试题总结
    Django学习排错备注
    追求卓越之旅(转)
  • 原文地址:https://www.cnblogs.com/zxh-iOS/p/4748032.html
Copyright © 2011-2022 走看看