文档章节

iOS CollectionView实现屏幕左右滑动

AustinKuture
 AustinKuture
发布于 2016/07/27 11:29
字数 439
阅读 1261
收藏 1

由于代码量较大,本文主要简单讲解主要步骤,如有疑问可以留言或私信.

一,创建自定义UICollectionViewCell,并实现TableView的数据源,代理方法.

#import <UIKit/UIKit.h>

@interface AKCollectionCellFirst : UICollectionViewCell<UITableViewDelegate,UITableViewDataSource>

@property (nonatomic,strong) UITableView *tabView;

@end


#import "AKCollectionCellFirst.h"


@interface AKCollectionCellFirst() 


@end
@implementation AKCollectionCellFirst

- (id)initWithFrame:(CGRect)frame{
    
    self = [super initWithFrame:frame];
    if (self){
        
        _tabView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];
        _tabView.separatorStyle = UITableViewCellSeparatorStyleNone;
        _tabView.delegate = self;
        _tabView.dataSource = self;
        //如果需要自定义tableViewCell可以在此对其进行注册
        [_tabView registerClass:[AKTableCellFirst class] forCellReuseIdentifier:@"ONE"];
       
        
        [self addSubview:_tabView];
    }
    
    return self;
}

二, 在CollectionViewCell中实现TableView的数据源和代理方法

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    
    return 10;
    
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    return 120;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    AKTableCellFirst *cell = [tableView dequeueReusableCellWithIdentifier:@"ONE"];
    
    if (cell == nil){
        
        cell = [[AKTableCellFirst alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ONE"];
    }
    
    NSArray *arrayP = @[@"Kuture",@"CD",@"ER",@"TE",@"WEB",@"AUI",@"HG",@"TYT",@"FHB",@"AW"];
    
    cell.person.text = arrayP[indexPath.row];
    cell.time.text = @"2016-07-11 15:08";
    cell.flowChat.text = @"What?";
    cell.content.text = @"You Know Who I am And you Find SomeThing,What?You find again ? I do not Belive that";
    cell.content.numberOfLines = 0;
    
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    
    return cell;
}

 

三, 创建UIViewController控制器并继承Collection协议与代理方法,创建UICollectionView,并注册自定义CollectionViewCell

#import "AKCollection.h"

@interface AKCollection()<UICollectionViewDelegate,
                         UICollectionViewDelegateFlowLayout,
                         UICollectionViewDataSource>
@end

@implementation AKCollection

- (void)viewDidLoad{
   
  [super viewDidLoad];
  
  UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init];
    flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
    flowLayout.itemSize = CGSizeMake(SCREEN_W, SCREEN_H - 150);
    flowLayout.minimumLineSpacing = 0;

    
    UICollectionView *collec = [[UICollectionView alloc]initWithFrame:self.view.frame collectionViewLayout:flowLayout];
    _collec = collec;
    _collec.delegate = self;
    _collec.dataSource = self;
    _collec.bounces = NO;
    _collec.backgroundColor = GROUND_COLOR(242, 242, 242, 1);
    _collec.alpha = 0.95;
    _collec.pagingEnabled = YES;
    
    //注册自定义的UICollectionViewCell
    [_collec registerClass:[AKCollectionCellFirst class] forCellWithReuseIdentifier:@"CellFirst"];
    [_collec registerClass:[AKCollectCellSecond class] forCellWithReuseIdentifier:@"CellSecond"];
    [_collec registerClass:[AKCollectCellThird class] forCellWithReuseIdentifier:@"CellThird"];
    [_collec registerClass:[AKCollectCellFourth class] forCellWithReuseIdentifier:@"CellFourth"];
    
    [self.view addSubview:_collec];

}

四, 实现数据源,代理方法:

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
    
    return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    
    return 4;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    
    UICollectionViewCell *cell;
    
    NSArray *idArray = @[@"CellFirst",@"CellSecond",@"CellThird",@"CellFourth"];
    cell = [collectionView dequeueReusableCellWithReuseIdentifier:idArray[indexPath.item] forIndexPath:indexPath];

    return cell;

}

 

© 著作权归作者所有

共有 人打赏支持
AustinKuture
粉丝 13
博文 40
码字总数 23740
作品 0
海淀
iOS工程师
私信 提问
iOS流布局UICollectionView系列二——UICollectionView的代理方法

iOS流布局UICollectionView系列二——UICollectionView的代理方法 一、引言 在上一篇博客中,介绍了最基本的UICollectionView的使用和其中我们常用的属性和方法,也介绍了瀑布流布局的过程与...

珲少
2015/10/27
0
3
iOS流布局UICollectionView系列三——使用FlowLayout进行更灵活布局

iOS流布局UICollectionView系列三——使用FlowLayout进行更灵活布局 一、引言 前面的博客介绍了UICollectionView的相关方法和其协议中的方法,但对布局的管理类UICollectionViewFlowLayout没...

珲少
2015/10/27
0
2
iOS ScrollView嵌套ScrolloView解决方案 - Swift

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/glt_code/article/details/78576628 iOS ScrollView嵌套ScrolloView解决方案 - Swift 本文Demo下载地址:Scr...

高刘通
2017/11/19
0
0
SDCycleScrollView实现自定义view的轮播(跑马灯效果)

需求是一个跑马灯的效果 已知SDCycleScrollView的轮播实现是基于Collectionview的。 如果我们想自定义实现轮播展示的内容就可以自定义一个CollectionviewCell 。让 SDCycleScrollView 的 Co...

长大以后想当小孩
2017/07/28
0
0
iOS开发实战——CollectionView中cell的间距设置

版权声明:本文为博主原创文章,欢迎分享到其它技术社区,分享请标明出处: https://blog.csdn.net/CHENYUFENG1991/article/details/51724224 我在前面多篇博客中详细讲解了CollectionView的...

乞力马扎罗的雪CYF
2016/06/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周五乱弹 —— 姑娘馋的口水都留下来了。

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @且无需多言 :分享Fall Out Boy的单曲《Disloyal Order Of Water Buffaloes》 《Disloyal Order Of Water Buffaloes》- Fall Out Boy 手机党...

小小编辑
今天
88
7
vue 对对象的属性进行修改时,不能渲染页面 vue.$set()

我在vue里的方法里给一个对象添加某个属性时,我console.log出来的是已经更改的object ,但是页面始终没有变化 原因如下: **受现代 JavaScript 的限制 (而且 Object.observe 也已经被废弃),...

Js_Mei
今天
2
0
开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
12
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
9
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部