文档章节

第04天实战技术(12):UICollectionView基本使用(抽取方式1)

宇鸿165
 宇鸿165
发布于 2017/03/30 10:36
字数 546
阅读 1
收藏 0

#####一、UICollectionView基本使用(抽取方式1)

抽取方法的逻辑:
方式1
1.先定义函数封装函数里面进行调用
2.缺少那个参数,补那个参数(如果参数比较多 就定义属性)


  • 1.抽取后的方法调用
1.抽取创建流水布局
2.抽取创建UICollectionView
>>>>
    // 流水布局: 调整cell的尺寸
    UICollectionViewFlowLayout *layout = [self setUpUICollectionViewFlowLayout];    
    [self setUpCreateCollectionView:layout];



#pragma mark 自定义方法
// 1. 设置流水布局
- (UICollectionViewFlowLayout *)setUpUICollectionViewFlowLayout
{
    UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];
    layout.itemSize = CGSizeMake(160, 160); // 大小
    layout.minimumLineSpacing = 50; // 设置最小的行间距
    //    layout.minimumInteritemSpacing = 0; // 设置最小的item间距
    layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; // 水平方向的滚动
    CGFloat margin = (ScreenW - 160) * 0.5;
    // 设置内边距 (左边的内边距)
    layout.sectionInset = UIEdgeInsetsMake(0, margin, 0, margin);
    
    return layout;
}

// 2. 创建CollectionView
- (void)setUpCreateCollectionView:(UICollectionViewFlowLayout *)layout
{
    UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:CGRectZero collectionViewLayout:layout];
    collectionView.center =self.view.center;
    collectionView.backgroundColor = [UIColor orangeColor];
    collectionView.bounds = CGRectMake(0, 0, self.view.bounds.size.width, 200);
    collectionView.showsHorizontalScrollIndicator = NO; // 不显示滚动条
    
    
    [self.view addSubview:collectionView];
    
    // 2.设置数据源方法
    collectionView.dataSource = self;
    
    // 3.注册cell
    [collectionView registerNib:[UINib nibWithNibName:NSStringFromClass([PhotoCell class]) bundle:nil] forCellWithReuseIdentifier:ID];
}

code

#import "ViewController.h"
#import "PhotoCell.h"

@interface ViewController ()<UICollectionViewDataSource>

@end

@implementation ViewController

#define ScreenW [UIScreen mainScreen].bounds.size.width
static NSString *const ID = @"cell"; // 不能让其他人瞎改 必须加上一个 const
- (void)viewDidLoad {
    [super viewDidLoad];
    

    // UICollectionView 使用注意点
    // 1.创建一个UIcollectionView 必须要有一个布局参数
    // UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];
    // 2.cell必须通过注册
    // 3.cell必须要自定义
    
    // 流水布局: 调整cell的尺寸
    UICollectionViewFlowLayout *layout = [self setUpUICollectionViewFlowLayout];
    
    [self setUpCreateCollectionView:layout];

}

#pragma mark 自定义方法
// 1. 设置流水布局
- (UICollectionViewFlowLayout *)setUpUICollectionViewFlowLayout
{
    UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];
    layout.itemSize = CGSizeMake(160, 160); // 大小
    layout.minimumLineSpacing = 50; // 设置最小的行间距
    //    layout.minimumInteritemSpacing = 0; // 设置最小的item间距
    layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; // 水平方向的滚动
    CGFloat margin = (ScreenW - 160) * 0.5;
    // 设置内边距 (左边的内边距)
    layout.sectionInset = UIEdgeInsetsMake(0, margin, 0, margin);
    
    return layout;
}

// 2. 创建CollectionView
- (void)setUpCreateCollectionView:(UICollectionViewFlowLayout *)layout
{
    UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:CGRectZero collectionViewLayout:layout];
    collectionView.center =self.view.center;
    collectionView.backgroundColor = [UIColor orangeColor];
    collectionView.bounds = CGRectMake(0, 0, self.view.bounds.size.width, 200);
    collectionView.showsHorizontalScrollIndicator = NO; // 不显示滚动条
    
    
    [self.view addSubview:collectionView];
    
    // 2.设置数据源方法
    collectionView.dataSource = self;
    
    // 3.注册cell
    [collectionView registerNib:[UINib nibWithNibName:NSStringFromClass([PhotoCell class]) bundle:nil] forCellWithReuseIdentifier:ID];
}

#pragma mark UICollectionViewDataSource
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return 10;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    PhotoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
    NSString *imageName = [NSString stringWithFormat:@"%ld",indexPath.row + 1];
    cell.image = [UIImage imageNamed:imageName];

    return cell;
    
}


@end

© 著作权归作者所有

宇鸿165
粉丝 1
博文 919
码字总数 368963
作品 0
广州
私信 提问
2018FFmpeg音视频核心技术精讲与实战(已完结)

第1章 课程导学与准备工作 全民娱乐时代,需要音视频等多媒体产品层出不穷,但会处理音视频数据的工程师却极度匮乏,进入音视频开发领域正当时,这门课程就是为这样的你而生。来吧!加入我们...

A 小青年
2018/12/14
0
0
2018FFmpeg音视频核心技术精讲与实战(已完结)最全

第1章 课程导学与准备工作 全民娱乐时代,需要音视频等多媒体产品层出不穷,但会处理音视频数据的工程师却极度匮乏,进入音视频开发领域正当时,这门课程就是为这样的你而生。来吧!加入我们...

weixin_44210556
2018/12/28
0
0
FFmpeg音视频核心技术精讲与实战(目前最全)

第1章 课程导学与准备工作 全民娱乐时代,需要音视频等多媒体产品层出不穷,但会处理音视频数据的工程师却极度匮乏,进入音视频开发领域正当时,这门课程就是为这样的你而生。来吧!加入我们...

weixin_43745537
2018/12/04
0
0
最新FFmpeg音视频核心技术精讲与实战完整版

第1章 课程导学与准备工作 全民娱乐时代,需要音视频等多媒体产品层出不穷,但会处理音视频数据的工程师却极度匮乏,进入音视频开发领域正当时,这门课程就是为这样的你而生。来吧!加入我们...

春暖花落
2018/11/27
0
0
2018目前最新最全FFmpeg音视频核心技术精讲+实战

第1章 课程导学与准备工作 全民娱乐时代,需要音视频等多媒体产品层出不穷,但会处理音视频数据的工程师却极度匮乏,进入音视频开发领域正当时,这门课程就是为这样的你而生。来吧!加入我们...

weixin_43893532
2018/12/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
5
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部