Tag: 自定义单元格

如何在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 […]