TA的每日心情 | 汗 2024-10-15 10:05 |
---|
签到天数: 372 天 [LV.9]以坛为家II
|
本帖最后由 Sian 于 2014-5-30 16:16 编辑
1、先看两者比较的效果图
2、特点:
2.1、都继承自UIScrollView,因此这两者可以说是兄弟关系,都是用于数据展示方面都是非凡的表现,并且UICollectionView自iOS6以来才支持;
2.2、Collection View的整体构成元素,共有三个要素,分别如下
- Cells(单元格)
- Supplementary Views(补充的view,相当于TableView的页眉和页脚)
- Decoration Views(装饰View,用于装饰整个CollectionView的
2.3、数据模型(数据提供者UICollectionViewDataSource),主要功能:
- Section数目
- Section里面有多少item
- 提供Cell和supplementary view设置
分别为:- numberOfSectionsInCollectionView:
- collectionView:numberOfItemsInSection:
- collectionView:cellForItemAtIndexPath:
复制代码 2.4、Cell和View的重用
在iOS6中,Cell重用改善,我们可以更加方便的使用Cell,系统总是为我们初始化Cell。我们可以直接使用。只需要简单的按照两步走即可:
1) 必须使用下面的方法进行Cell类的注册:- - (void)registerClass:forCellWithReuseIdentifier:
- - (void)registerClass:forSupplementaryViewOfKind:withReuseIdentifier:
- - (void)registerNib:forCellWithReuseIdentifier:
- - (void)registerNib:forSupplementaryViewOfKind:withReuseIdentifier:
复制代码 2) 从队列中取出一个Cell,具体方法如下:- -(id)dequeueReusableCellWithReuseIdentifier:forIndexPath:
- -(id)dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath:
复制代码 2.5、界面布局
collectionView与tableView最大的不同点就在于此,collectionView必须要使用自己的layout(UICollectionViewLayout)
如:- UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
- flowLayout.itemSize = CGSizeMake(52, 52); // cell大小
- flowLayout.minimumInteritemSpacing = 1; // cell间距
- flowLayout.minimumLineSpacing = 1; // cell行距
- flowLayout.sectionInset = (UIEdgeInsets){81,1,1,1}; // cell边距
复制代码 创建collectionView需要带Layout的初始化方法:- - (id)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout;
复制代码 3、示例- //
- // CarLicenseView.m
- // RouteMapInformation
- //
- // Created by yusian on 14-5-29.
- // Copyright (c) 2014年 yusian. All rights reserved.
- //
- #import "CarLicenseView.h"
- /****************************Cell定义*********************************/
- @interface SALicenseCell : UICollectionViewCell
- @property (nonatomic, strong) UILabel *label;
- @end
- @implementation SALicenseCell
- - (id)initWithFrame:(CGRect)frame
- {
- self = [super initWithFrame:frame];
- if (self) {
-
- // 键盘文字设置
- self.label = [[UILabel alloc] init];
- self.label.backgroundColor = [UIColor clearColor]; // 透明颜色
- self.label.textAlignment = NSTextAlignmentCenter; // 文字居中
- self.label.frame = CGRectMake(0, 0, 52, 52); // 位置大小
- self.label.font = [UIFont systemFontOfSize:20]; // 文字大小
- self.backgroundColor = [UIColor whiteColor]; // 背景颜色
-
-
- [self.contentView addSubview:self.label];
- }
- return self;
- }
- + (NSString *)ID
- {
- return @"licenseCellID";
- }
- @end
- /****************************Cell定义*********************************/
- @interface CarLicenseView () <UICollectionViewDataSource, UICollectionViewDelegate, UIAlertViewDelegate>
- @end
- @implementation CarLicenseView
- #pragma mark 界面初始化
- - (id)initWithFrame:(CGRect)frame
- {
- // 1、键盘按钮布局
- UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
- flowLayout.itemSize = CGSizeMake(52, 52); // 按键大小
- flowLayout.minimumInteritemSpacing = 1; // 按键间距
- flowLayout.minimumLineSpacing = 1; // 按键行距
- flowLayout.sectionInset = (UIEdgeInsets){81,1,1,1}; // 按键边距
-
- // 2、键盘附加视图
- self = [super initWithFrame:frame collectionViewLayout:flowLayout];
- if (self) {
- // 键盘背景色
- self.backgroundColor = [UIColor colorWithWhite:0.9 alpha:0.8];
-
- }
-
- // 3、注册按钮类(内部处理机制)
- [self registerClass:[SALicenseCell class] forCellWithReuseIdentifier:[SALicenseCell ID]];
- self.delegate = self;
- self.dataSource = self;
-
- return self;
- }
- #pragma mark 界面绘制方法
- #pragma mark 键盘按键数目
- - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
- {
- return 30;
- }
- #pragma mark 键盘按键文字
- - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
- {
- SALicenseCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:[SALicenseCell ID] forIndexPath:indexPath];
- cell.backgroundColor = [UIColor blueColor];
- return cell;
- }
- @end
复制代码 参考链接:http://www.howzhi.com/group/iosDevelop/discuss/10134
|
|