对UICollectionView的学习

UICollectionView 和 UICollectionViewController 类是iOS6 新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局,用法类似于UITableView 和 UITableViewController 类

与UICollectionView有关的三个协议:UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout

几个常用到得方法(需遵守协议)

- (void)viewDidLoad
{
    [super viewDidLoad];
    //创建一个布局方式
    UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
//    layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
    layout.headerReferenceSize = CGSizeMake(320, 50);//header的size
    layout.footerReferenceSize = CGSizeMake(320, 20);
    layout.sectionInset = UIEdgeInsetsMake(0, 0, 20, 0);
    //创建一个集合视图
    UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:[UIScreen mainScreen].bounds collectionViewLayout:layout];
    collectionView.dataSource = self;
    collectionView.delegate = self;
    [collectionView registerClass:[CustomCell class] forCellWithReuseIdentifier:@"cell"];
    //注册header
    [collectionView registerClass:[CustomHeaderView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header"];
    //注册footer 增补视图
    [collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footer"];

    [self.view addSubview:collectionView];
    [layout release];
    [collectionView release];
    // Do any additional setup after loading the view.
}
//定义展示的Section的个数
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
    return 2;
}
//定义展示的UICollectionViewCell的个数
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return 10;
}

//每个UICollectionViewCell展示的内容
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *identifier = @"cell";
    CustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
    cell.titleLabel.text = [NSString stringWithFormat:@"%d",indexPath.row];
    cell.backgroundColor = [UIColor orangeColor];
    return cell;
}
//定义每个UICollectionView 中cell的大小
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    return CGSizeMake(100, 200);
}
//增补视图header与footer
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
    if (kind == UICollectionElementKindSectionHeader) {
        CustomHeaderView *view = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"header" forIndexPath:indexPath];
        view.backgroundColor = [UIColor greenColor];
        return view;
    }else
    {
        UICollectionReusableView *view = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"footer" forIndexPath:indexPath];
        view.backgroundColor = [UIColor redColor];
        return view;
    }

}

对UICollectionView的学习

时间: 2024-10-11 10:08:06

对UICollectionView的学习的相关文章

UICollectionView 详细讲解学习

UICollectionView 和UITableView很像,是APPLE公司在iOS 6后推出的用于处理图片这类UITableView 布局困难的控件,和UITableView 一样,它也有自己的Datasource和delegate.下面详细说下像这种方式的效果. 首先来看看UICollectionView 的DataSource. @protocol UICollectionViewDataSource <NSObject> @required - (NSInteger)collect

初级篇第七期:学习UICollectionView

学习建议:自己动手,丰衣足食 学习周期:1周 学习目的:熟练使用Obejct-C中最常用的控件之一UICollectionView 学习答疑:欢迎来技术群里提问并做分享 学习工具:Xcode开发环境 学习内容:熟悉UICollectionView的基本用法,以及场景运用 UICollectionView是一个对UITableView的拓展,因为它是在iOS6才推出的,在大家经常用的瀑布流效果大部分Demo就是用UICollectionView来实现的,并且它相对UITableView的布局更加灵

UICollectionView 具体解说学习

UICollectionView 和UITableView非常像,是APPLE公司在iOS 6后推出的用于处理图片这类UITableView 布局困难的控件,和UITableView 一样,它也有自己的Datasource和delegate.以下具体说下像这种方式的效果. 首先来看看UICollectionView 的DataSource. @protocol UICollectionViewDataSource <NSObject> @required - (NSInteger)collec

自定义UICollectionLayout布局 —— UIKit之学习UICollectionView记录一《瀑布流》

一.思路 思路一:比较每一行所有列的cell的高度,从上到下(也就是从第一行开始),从最短的开始计算,(记录下b的高度和索引,从开始计算,依次类推) 思路二:设置上.下.左.右间距和行间距.列间距及列数. 思路三:实现的重要的方法. 二.代码先行. 1.自定义layout类. //入口 #import <UIKit/UIKit.h> @protocol STRWaterLayoutDelegate; @interface STRWaterLayout : UICollectionViewLay

UICollectionView学习总结

1?? UICollectionView与UITableView的区别:布局 UICollectionView与UITableView的共同点:循环利用 —> UITableView继承UISCrollView 注意:          —> UICollectionView 初始化必须要传入布局 UICollectionViewLayout UICollectionViewFlowLayout 流水布局:九宫格布局 —> UICollectionViewCell必须要注册      

蓝懿IOS学习UICollectionView实战轮播图

今天刘国斌老师讲了关于JSON数据源的获取与利用,通过微博的实战项目进行练习,获取的数据都是网络上请求的真实数据,这种方式学起来很轻松,很容易理解. 刘国斌老师把今天做的练习题UICollectionView轮播图实现功能的方法步骤都下了下来,我们学起来很方便.   实现轮播图 效果的步骤: 1.创建layout (UICollectionViewFlowLayout) 2.设置layout的方向 默认上下 3.创建UICollectionView 4.设置delegate dataSource

iOS学习之UICollectionView使用注解

#import "ViewC.h" #import "CLCollectionViewCell.h" #import "HeadView.h" #import "FootView.h" static NSString *cellIdentifier = @"cell"; static NSString *headerIdentifier = @"header"; static NSStr

iOS学习 - 20 UICollectionView 移动 Item ,类似背包

方法一:苹果自带 //UICollectionViewDataSource- (BOOL)collectionView:(UICollectionView *)collectionView canMoveItemAtIndexPath:(NSIndexPath *)indexPath; - (void)collectionView:(UICollectionView *)collectionView moveItemAtIndexPath:(NSIndexPath *)sourceIndexPa

关于uicollectionview的个人学习

总所周知,在开发过程中,当有类似瀑布流的业务需求的时候,使用uitableView可以实现类似的效果,但是苹果开发出的uicollectionView似乎大大方便了开发者的工作量,使得实现这种效果更加高效.只要我们在使用的时候重写uicollectionView的UICollectionviewLayout就可以实现. 工作原理:就实现瀑布流效果中几个重要的方法进行解析. 1.-(void)prepareLayout  准备好布局后调用该方法.此时collectionView所有属性都已确定.读