Ios 在自调整大小UITableView中更改单元格高度
我有一个具有自调整大小行为的表视图,在初始负载下运行良好。每个单元格都有添加注释的功能,这些注释显示在标题下的单元格上,并容纳单元格需要调整自身大小的注释文本。 我试图调整约束,并在contentView上调用setNeedsLayout,但似乎没有多大帮助,单元格也没有调整大小。Ios 在自调整大小UITableView中更改单元格高度,ios,uitableview,Ios,Uitableview,我有一个具有自调整大小行为的表视图,在初始负载下运行良好。每个单元格都有添加注释的功能,这些注释显示在标题下的单元格上,并容纳单元格需要调整自身大小的注释文本。 我试图调整约束,并在contentView上调用setNeedsLayout,但似乎没有多大帮助,单元格也没有调整大小。 如何在不重新加载tableview的情况下调整单元格的大小。对table view单元格尺寸的更改需要传达给其父表视图,以便可以更改其他单元格尺寸。最简单的方法是在beginUpdates()和endUpdates(
如何在不重新加载tableview的情况下调整单元格的大小。对table view单元格尺寸的更改需要传达给其父表视图,以便可以更改其他单元格尺寸。最简单的方法是在
beginUpdates()
和endUpdates()
中包装大小更改,这也会使更改成为动画
例如,假设我有一个具有展开和折叠状态的UITableViewCell
:
final class TableViewCell: UITableViewCell {
var isExpanded: Bool = false {
didSet {
heightConstraint.constant = isExpanded ? 150 : 75
}
}
lazy var heightConstraint = self.heightAnchor.constraint(equalToConstant: 75)
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
heightConstraint.isActive = true
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
它由isExpanded:Bool
控制
我可以展开或折叠表视图中所有可见的TableViewCell
s,方法是:
@objc
private func toggleExpanded() {
tableView.beginUpdates()
// Finding all of the visible cells of type `TableViewCell` and changing isExpanded to not isExpanded
tableView.visibleCells.flatMap { $0 as? TableViewCell }.forEach { $0.isExpanded = !$0.isExpanded }
tableView.endUpdates()
// toggle back in 2 seconds
perform(#selector(self.toggleExpanded), with: nil, afterDelay: 2.0)
}
其结果如下:
您可以看到完整的游乐场源代码基本上这是beyowulf所说的-您需要通知tableView重新绘制自己-请参阅以获取解释和示例,如果有帮助,请留下向上投票。。