UICollectionView 具体解说学习

UICollectionView 和UITableView非常像,是APPLE公司在iOS 6后推出的用于处理图片这类UITableView 布局困难的控件,和UITableView 一样,它也有自己的Datasource和delegate。以下具体说下像这种方式的效果.

首先来看看UICollectionView 的DataSource。

@protocol UICollectionViewDataSource <NSObject>
@required

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

// The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;

@optional

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

// The view that is returned must be retrieved from a call to -dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath:
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath;

@end

能够看到和UITableView 一样,它有两个必须实现的方法:

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section//有多少个item

-dequeueReusableCellWithReuseIdentifier:forIndexPath:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;//每一个长什么样,它要使用dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath:来生成

其他的两个是分别有几部分cell,和UITableView中的numberOfSection一样.默认是1个,viewForSupplementaryElementOfKind这个则是用来做出表头和表尾的。

UICollectionViewDelegate 它的代理方法全是可选的,常常且主要用到的就是:

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

这是表明选中后要做什么.

以下来实现一下:

首先在自定义的头文件里加入一个UIColletionView的属性(比直接用实例变量好,具体请看Effective objective-c的学习笔记1)配置各种属性,然后加到self.view上。

@property (nonatomic, strong) ZJCollectionViewFlowOut *collectionViewFlowLayout;
    self.collectionView = [[UICollectionView alloc]initWithFrame:self.view.frame collectionViewLayout:self.collectionViewFlowLayout];
    _collectionView.backgroundColor = [UIColor clearColor];
    _collectionView.dataSource = self;
    _collectionView.delegate = self;
    [self.view addSubview:_collectionView];

再设置viewController 遵守delegate和dataSource;

@interface ZJCollectionViewController ()<UICollectionViewDataSource, UICollectionViewDelegate>
@end

这样再xcode 上新的一行输入- collection就会出现非常多collectionView的提示了.

实现:collectionView:cellForItemAtIndexPath:

由于这种方法要用到前面说的那个注冊的cell所以先建一个UICollectionViewCell,顺便搞定那个FlowLayout.

Cell的内容当然能够自定义的了.

在viewDidLoad中创建CollectionView的以下加上:

    [_collectionView registerClass:[ZJCollectionViewCell class] forCellWithReuseIdentifier:kCellReuseIdentifier];
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    ZJCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kCellReuseIdentifier forIndexPath:indexPath];
    NSString *image = @"201502192144014806.jpg";
    cell.userImageView.image = [UIImage imageNamed:image];
    return cell;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return self.pictureArray.count;
}

在viewDidLoad中collectionView创建之前要创建那个布局的

collectionViewFlowLayout 对象.

    self.collectionViewFlowLayout = [[ZJCollectionViewFlowOut alloc]init];

当中在collectionViewFlowLayout里面是这种:

- (id)init
{
    if (self = [super init]) {
        self.minimumInteritemSpacing = 1.0;//item 之间的行的距离
        self.minimumLineSpacing = 0.0;//item 之间竖的距离
        self.itemSize = (CGSize){[UIScreen mainScreen].bounds.size.width/3,[UIScreen mainScreen].bounds.size.width/3};
        //        self.sectionInset = UIEdgeInsetsMake(4, 4, 4, 4); 这个是设置一个section的距离上下上左下右间距。

}
    return self;
}

得出的结果例如以下图:

这是一个简单的UICollectionView的展示,时间不多。有空再具体点

时间: 2024-11-10 12:00:14

UICollectionView 具体解说学习的相关文章

UICollectionView 详细讲解学习

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

关于uicollectionview的个人学习

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

(原)UICollectionView的基本使用

UICollectionView基本使用 学习iOS一段时间了,早听说了UICollectionView的强大一直没有机会使用,今天自己研究了一下. UICollectonView类似UITableView 用法基本相似, UICollectionView 更灵活,更强大UICollectonView 将其子视图的位置,大小和外观的控制权委托给一个单独的布局对象.通过提供一个自定义布局对象,你几乎可以实现任何你能想象到得布局. 下面是UICollectionView 常用的代理方法. //定义展

《转》循环神经网络(RNN, Recurrent Neural Networks)学习笔记:基础理论

转自 http://blog.csdn.net/xingzhedai/article/details/53144126 更多参考:http://blog.csdn.net/mafeiyu80/article/details/51446558 http://blog.csdn.net/caimouse/article/details/70225998 http://kubicode.me/2017/05/15/Deep%20Learning/Understanding-about-RNN/ RNN

初级篇第七期:学习UICollectionView

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

对UICollectionView的学习

UICollectionView 和 UICollectionViewController 类是iOS6 新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局,用法类似于UITableView 和 UITableViewController 类 与UICollectionView有关的三个协议:UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout 几个常用到得方法(需

自定义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