通过使用约束自行调整大小来展开和折叠 TableView 单元格

Posted

技术标签:

【中文标题】通过使用约束自行调整大小来展开和折叠 TableView 单元格【英文标题】:Expand and Collapse TableView Cells by Self-Sizing with Constraits 【发布时间】:2018-07-20 10:58:14 【问题描述】:

我想在没有heightForRowAt() 的情况下展开和折叠表格视图中的单元格。我只想使用布局约束。

我已阅读Self-sizing Table View Cells 并查看this post 中的解决方案

现在我遇到了一个问题:当我在表格视图中触摸我的单元格时,它没有发生,当我双击它时,它正在工作;某事只有一次。我不明白发生了什么。

这个视频发生了什么:(link)

这是my code

【问题讨论】:

【参考方案1】:

您的问题是您将isExpanded 逻辑放置在单元格本身内,这可能会出列并导致错误值,您需要将其放置在您的模型中,因此创建一个内容数组

struct Content 
   var title:String
   var subTitle:String
   var isExpanded:Bool

//

查看完整编辑Here(抱歉不在 github 上并排除了视频资产)

//

【讨论】:

【参考方案2】:

选择tableview的单元格后cell.isExpanded标志改为truetableView.reloadRows(at: [indexPath], with: .fade) 此代码调用您的 cellforindex 方法并创建新单元格。因此由于单元格的可重用性,您的逻辑出错了。

【讨论】:

以上是关于通过使用约束自行调整大小来展开和折叠 TableView 单元格的主要内容,如果未能解决你的问题,请参考以下文章

使用约束的 UIImageView 的折叠和展开动画

调整单元格大小时如何使表格视图动画平滑

高度约束动画“跳跃”

展开和折叠视图上的标准 Cocoa 控件

使用自动布局约束动态调整表格视图单元格的大小

程序约束折叠单元格视图