如何在iOS中实现可折叠表部分
🎉终于发布了CocoaPod! 看这里。
这是一个简单的iOS项目,演示了如何以编程方式实现可折叠表格部分,即没有主故事板,没有XIB,无需注册笔尖,仅是Swift 3!
在此项目中,表格视图会自动调整行的高度以适合每个单元格中的内容,并且自定义单元格也以编程方式实现。
可以在我的Github上找到源代码。
如何实现可折叠表格部分?
步骤1.准备数据
假设我们将以下数据分为不同的部分,每个部分都是一个Section对象:
crashed表示当前节是否折叠,默认为false 。
步骤2.设置TableView以支持自动调整大小
步骤3.节标题
根据Apple API参考,我们应该使用UITableViewHeaderFooterView 。 让我们对其进行子类化并实现节头CollapsibleTableViewHeader :
当用户点击标题时,我们需要折叠或展开该部分,为此,我们借用UITapGestureRecognizer 。 另外,我们需要将此事件委托给表视图以更新折叠的属性。
由于我们没有使用任何情节提要或XIB,如何以编程方式自动布局? 答案是NSLayoutConstraint的ConstraintsWithVisualFormat函数。
步骤4. UITableView数据源和委托
段数为sections.count :
并且每个部分中的行数为:
注意,我们不需要为折叠部分渲染任何单元格,如果该部分中有很多单元格,则可以大大提高性能。
接下来,我们使用tableView的viewForHeaderInSection函数来连接我们的自定义标头:
普通的行单元格非常简单:
在上面的代码中,我们使用普通的UITableViewCell
,如果您想了解如何制作自动调整大小的单元格,请查看源代码中的CollapsibleTableViewCell
。 CollapsibleTableViewCell
是UITableViewCell
的子类,它添加了名称和详细信息标签,最重要的是它支持自动调整大小功能,关键是正确设置自动布局约束,确保将子视图适当地拉伸到顶部和底部。 contentView
。
步骤5。如何切换折叠和展开
这个想法真的很简单,如果某节的折叠属性为true ,则将该节内的行的高度设置为0 ,否则设置UITableViewAutomaticDimension !
这是切换功能:
重新加载这些节后,将重新计算和重画该节中的单元格数。
就是这样,我们已经实现了可折叠表格部分! 请参考源代码并查看详细的实现。
执照
该项目已获得MIT许可,版权所有©2017 Yong Su。
作者: Yong Su @ Box Inc.