HDCollectionView
目录由gh-md-toc创建
如果图片挂了,搬个梯子就好了。(或者看这里)
现在支持diff操作
。
兼容Swift,示例在此查看HDListViewDiffer的单独组件。效果如下
描述 | 示例 | 描述 | 示例 |
---|---|---|---|
系统流布局 | 瀑布流加载更多 | ||
对齐删除 | 瀑布流删除/交换 | ||
HDYogaFlowLayout 删除/交换 | 水平滚动diff |
更多结果,请下载示例自行测试。
部分静态页面截图
描述 | 示例 | 描述 | 示例 |
---|---|---|---|
概述 | 简单易用 | ||
单元格居中对齐 | 单元格左对齐 | ||
单元格两端对齐 | 单元格右对齐 | ||
垂直包含水平 | 水平悬浮 | ||
一至N | 汽车主页 | ||
QQ联系 |
简介
使用HDCollectionView快速构建一个高效灵活的listView组件,基本实现了目前常见的各种布局。
1. 使用HDCollectionView构建滑动列表的优势是什么?
- 数据驱动,灵活添加和删除,无需手动注册任何视图
- 高效地找到当前屏幕需要显示的属性集,无需担心数据过大
- 基于Yoga(flexbox),实现了流式布局,可以完全替代系统的FlowLayout
- 链式制造者支持
- 为每一行/列自定义瀑布流布局,瀑布流加载更多数据进行增量计算
- 支持指定任意头段浮动,永久浮动/横向滑动左侧悬浮
- 支持单元格高度自动计算/缓存,支持AutoLayout计算或hdSizeThatFits方式进行返回
- 轻松添加装饰视图(装饰视图)
- 每个分段的布局都可以不同(例如,第一段使用常规布局,第二段使用瀑布流布局,参照淘宝首页)
- 支持缓存单元格所有子视图的帧
- 单元格/头部/尾部/装饰统一回调,统一UI更新
- 支持水平和垂直滑动
2. 安装
Pod 'HDCollectionView'
找不到,请先执行 pod repo update
。
3,如何使用
1,首先初始化并添加到父视图中
HDCollectionView* listV = [HDCollectionView hd_makeHDCollectionView:^(HDCollectionViewMaker *maker){
Maker.hd_frame(self.view.bounds);
}];
[self.view addSubview:listV];
- 建议将以下代码添加到代码片段中
/ / The segment cell data source
NSMutableArray *cellModelArr = @[].mutableCopy;
NSInteger cellCount = <#NSInteger cellCount#>;
For (int i =0; i<cellCount; i++) {
HDCellModel *model = [HDCellModel new];
model.orgData = <#id someModel#>;
model.cellSize = CGSizeMake(<#CGFloat width#>, <#CGFloat height#>);
model.cellClassStr = <#NSString* cellClassStr#>;
[cellModelArr addObject:model];
}
/ / The layout of the paragraph
HDYogaFlowLayout *layout = [HDYogaFlowLayout new];
layout.secInset = UIEdgeInsetsMake(<#CGFloat top#>, <#CGFloat left#>, <#CGFloat bottom#>, <#CGFloat right#>);
Layout.justify = YGJustifySpaceBetween;
layout.verticalGap = <#CGFloat verticalGap#>;
layout.horizontalGap = <#CGFloat horizontalGap#>;
layout.headerSize = CGSizeMake(<#CGFloat width#>, <#CGFloat height#>);
layout.footerSize = CGSizeMake(<#CGFloat width#>, <#CGFloat height#>);
/ / All data encapsulation of the segment
HDSectionModel *secModel = [HDSectionModel new];
secModel.sectionHeaderClassStr = <#NSString* headerClassStr#>;
secModel.sectionFooterClassStr = <#NSString* footerClassStr#>;
secModel.headerObj = nil;
secModel.footerObj = nil;
secModel.headerTopStopType = HDHeaderStopOnTopTypeNone;
secModel.isNeedAutoCountCellHW = YES;
secModel.sectionDataArr = cellModelArr;
secModel.layout = layout;
如何添加:将上述代码复制到任何Xcode文件 -> 选择上述代码 -> 右键点击 -> 选择创建代码片段 -> 填写标题和快捷键 -> 重新启动Xcode。然后在Xcode的任何位置按快捷键即可。
当创建对象时,也可以使用链创建器,就像
HDCellModel *model = HDMakeCellModelChain
.hd_orgData(@(i).stringValue)
.hd_cellSize(CGSizeMake(self.view.frame.size.width/2, 50))
.hd_cellClassStr(@"DemoVC1Cell")
.hd_generateObj;
HDYogaFlowLayout *layout = HDMakeYogaFlowLayoutChain
.hd_secInset(UIEdgeInsetsZero)
.hd_justify(YGJustifySpaceBetween)
.hd_headerSize(CGSizeMake([UIScreen mainScreen].bounds.size.width, 50))
.hd_footerSize(CGSizeMake([UIScreen mainScreen].bounds.size.width, 50))
.hd_generateObj;
HDSectionModel *secModel = HDMakeSecModelChain
.hd_sectionHeaderClassStr(@"DemoVC1Header")
.hd_headerTopStopType(HDHeaderStopOnTopTypeNone)
.hd_sectionDataArr(cellModelArr)
.hd_layout(layout)
.hd_generateObj;
更多详细信息请参考DemoVC4
3,设置数据
[listV hd_setAllDataArr:@[secModel]];
嗯,未来只需要一分钟,滑动的列表就可以完成,剩余的工作是实现单元格。
要求
iOS8+
许可证
HDCollectionView遵循MIT许可证。有关更多信息,请参阅LICENSE文件。