| 测试已测试 | ✗ |
| 语言语言 | Obj-CObjective C |
| 许可证 | MIT |
| 发布时间最新发布 | 2016年11月 |
由 DaidoujiChen 维护。
展开当前选定的项目,吸引用户注意。
与默认的 UICollectionView 只能以相同的固定大小显示项目不同,DaiExpandCollectionView 不但可以同时显示两个不同大小的项目,还可以通过平滑动画切换选定的项目。
将文件夹 DaiExpandCollectionView\DaiExpandCollectionView\ 下的 4 个源文件拖放到您的项目中。
DaiExpandCollectionView.h
DaiExpandCollectionView.m
DaiExpandCollectionViewFlowLayout.h
DaiExpandCollectionViewFlowLayout.m
然后导入主头文件: #import "DaiExpandCollectionView.h"
DaiExpandCollectionView *daiExpandCollectionView = [DaiExpandCollectionView initWithFrame:self.view.bounds];
[daiExpandCollectionView registerClass:[ImageCollectionViewCell class] forCellWithReuseIdentifier:@"ImageCollectionViewCell"];
daiExpandCollectionView.expandDelegate = self;
[self.view addSubview:daiExpandCollectionView];
注意: 使用 [DaiExpandCollectionView initWithFrame:] 初始化 DaiExpandCollectionView,而不是默认使用的 UICollectionView 的 [[UICollectionView alloc] initWithFrame:collectionViewLayout:]。
接下来,注册 UICollectionViewCell,然后设置 expandDelegate。
在 DaiExpandCollectionViewDelegate 中有两个必需的方法
- (NSInteger)numberOfItemsInCollectionView:(UICollectionView *)collectionView;
返回集合视图中项目(视图)的数量。
例如
- (NSInteger)numberOfItemsInCollectionView:(UICollectionView *)collectionView {
return 20;
}
意味着集合视图中有 20 个项目(视图)。
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
返回在集合视图指定索引处显示的 UICollectionViewCell。
例如
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
static NSString *identifier = @"ImageCollectionViewCell";
ImageCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
cell.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg", indexPath.row + 1]];
return cell;
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndex:(NSInteger)index;
返回当前选中项的索引。例如
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndex:(NSInteger)index {
NSLog(@"selected : %d", index);
}
如果您想在一行中使用超过 3 个项目。将您的代码从
self.daiExpandCollectionView = [DaiExpandCollectionView initWithFrame:frame];
改为
self.daiExpandCollectionView = [DaiExpandCollectionView initWithFrame:frame itemsInRow:4];
或者您可以在运行时动态更改 itemsInRow 的值
self.daiExpandCollectionView.itemsInRow = 5;
DaiExpandCollectionView 将自动处理动画。