使用固定子视图自动调整表视图单元格的大小

时间:2018-10-27 22:59:10

标签: ios uitableview tableview autoresize

我想要一个带有标题和开关标题的单元格。当开关打开时,它应显示带有动画扩展单元格的内容。标头应始终可见且高度恒定。

该单元格由一个包含2个子视图,标题和主体的容器视图组成。身体上有一个标记单元格内容的标签。

单元格有一个委托,告诉控制器像这样重新加载内容:

tableView.beginUpdates()
tableView.endUpdates()

(介于两者之间。我是否应该确定某些内容?)

我尝试对标头设置一个高度限制,对主体设置一个高度限制,当开关更新其值时,我将主体的约束更新为标签的高度(计算正确完成)。我还尝试过对容器设置一个单一的约束(恒定的标头高度+标签高度+填充),但这也没有用。

控制器具有的是tableView的委托。我没有设置估计的行高(应该吗?),对于heightForRowAt我要返回UITableView.automaticDimension

如果您对如何完成操作有任何建议,即使对于其他视图/子视图组织,也请发表评论。

enter image description here

编辑:

这实际上是一个愚蠢的错误。调用委托单元后,我正在更新约束。为了将来参考,我将代码发布在这里。

func configure(with reminder: Reminder, delegate: CellUpdateDelegate) {
    self.delegate = delegate
    self.reminder = reminder

    bodyLabel.text   = reminder.body
    headerTitle.text = reminder.title

    let height = bodyLabel.requiredHeight + 16
    containerHeight.constant = 48 + (alertSwitch.isOn ? height : 0 )
}

@objc func switching() {
    let height = bodyLabel.requiredHeight + 16
    containerHeight.constant = 48 + (alertSwitch.isOn ? height : 0 )
    delegate?.didSelect(reminder)
}

0 个答案:

没有答案