VPGenericCollectionView
重要说明
这个组件仅适用于同质化单元格,不适用于异质化(至少目前是这样的)。所以,如果您正在寻找这一点,那么这个组件可能不符合您的需求。
为什么
如果您是一位有几年经验的 iOS 开发者(像我一样),我敢保证您会厌倦于编写初始化集合视图及其单元格的相同代码集。当我们计划考虑自适应单元格(或自适单元格)时,在所有地方编写相同/类似的代码将会变得相当令人沮丧。这个库利用泛型一次性编写代码(这些代码已经包含在这个库中),并可以多次使用。
如何
VPGenericCollectionView 使用基于协议的方法,通过少量代码创建一个具有自适应单元格和处理的同质化集合视图。VPGenericCellProtocol 协议定义了单元格的构建方式,GenericCollectionView 需要单元格符合这些协议才能工作。如果您的操作有误,编译器将显示错误,并告知错误信息。
设置?
设置 VPGenericCollectionView
- 在泛型参数内声明一个 GenericCollectionView 的属性,使用 cell 类初始化它。这个 cell 必须强制符合 VPGenericCellProtocol。
- 像其他视图一样,通常设置 frame / 约束到父视图。
- 设置
maximumCellWidth
,这是 cell 可以占用的最大宽度。 - 在我们有必要的数据时,调用 GenericCollectionView 实例的
reload:
函数来更新集合视图。 - 可选 - 根据 cell 的最小内容设置
minimumCellHeight
到合适的值。例如,一个 cell 有高度为 100 的图片视图,在图片视图下方放置 2 个标签,标签之间有 8 个像素的填充,那么最小 cell 的高度将是 8 + 100 + 8 + 0(因为标签可以为空,并且它可以用 0 作为高度不破坏约束)+ 8 = 124。它可能稍微高一点,比如,在这个例子中是 125。
但是设置为较大的值(例如,这里的 250)将会渲染所有 cell 至少为那个值,即,即使 cell 没有内容,它也会渲染为 250。
如果我们设置值小于 124,cell 将会抛出约束错误,行为未知。
/* Cell's layout */
|-----------------|
| 8 |
|-----------------| _
| | |
| ImageView | 100
| | |
|-----------------| -
| 8 |
|-----------------|
| |
| Label |
| |
|-----------------|
| 8 |
|-----------------|
- 可选 - 如有需要修改 cellSpacing、颜色、内边距等可选参数。
- 可选 - 如果 cell 需要配置更多功能(例如,隐藏或显示按钮等),除了我们通常在集合视图的 cell 中所做的默认设置外,设置
configureCellCallback
。这将在 cellForRow 完成后、viewModel 初始化后立即调用。回调函数内的参数将被自动使用泛型类型转换。 - 可选 - 如果需要观察 cell 点击选择,设置
didSelectCallback
。回调函数内的参数将被自动使用泛型类型转换。
设置集合视图 cell
- 你必须定义 cell 中的一个
viewModel
属性。使用你的对象数据类型声明该属性,并在该变量的didSet
中更新你的视图,该变量将自动被调用。 - 正常添加 cell 的子视图,但请确保我们在 cell 中的任何视图上都有四面约束,这样我们就可以正确确定 cell 的内容高度。
缺点 - 不支持通过 nib 文件设置 VPGenericCollectionView。VPGenericCollectionView 必须通过代码创建。但由于创建比较容易,我认为我们可以忽略这一点。
注意 1 - 如果你需要一个在小可扩展视图中可调整大小集合视图的 cell,例如操作表,请将 VPGenericCollectionView 的实例添加到堆叠视图中,然后将四面约束添加到堆叠视图,这样你就设置好了。
注意 2 - 如果你需要在另一个可调整大小的集合视图的 cell 中(VPGenericCollectionView 的层次结构的层)设置可调整大小的集合视图的 cell,就像在 注意 1 中提到的,即,在父 cell 中添加堆叠视图。
示例
要运行示例项目,请克隆仓库,然后从Example目录运行pod install
。
要求
安装
VPGenericCollectionView 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的Podfile中
pod 'VPGenericCollectionView'
作者
varunpm1, [email protected]
许可证
VPGenericCollectionView 在MIT许可证下提供。有关更多信息,请参阅LICENSE文件。