HDCollectionView 0.7.7

HDCollectionView 0.7.7

donggelaile维护。



 
依赖
Yoga~> 1.14.0
HDListViewDiffer>= 0
 

  • 编者
  • donggelaile

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];
  1. 建议将以下代码添加到代码片段中
/ / 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文件。