我正在使用UITableViewCell
的自定义子类,其中包含一个名为UILabel
的{{1}}的自定义子类。我有一个名为descriptionLabel
的变量,它应该是单元格的高度,具体取决于标签中文本的长度。第2+行的单元格的高度设置为50,除非选中它们,否则它们会扩展到可以看到nativeHeight
的整个高度。但是,它没有返回正确的值来启用此功能。我将其定义如下(其中116是不包括UILabel的所有其他内容的固定高度):
UILabel
在单元格代码中调用该变量:
var nativeHeight : CGFloat {
return self.descriptionLabel.intrinsicContentSize.height + 116
}
在“表视图”代码中也称为它:
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
if selected {
self.cellHeightConstraint.constant = self.nativeHeight
} else if !selected {
self.cellHeightConstraint.constant = 50
}
}
答案 0 :(得分:0)
Rakesha是正确的,您不需要heightForRowAtIndexPath。如果正确设置,一切都会为您计算。
在前两个单元格上正确设置约束,因此您无需对136和50进行硬编码。
关于第三个单元格,我可能会考虑在您的描述标签上设置高度限制,即50。当您要扩展单元格时,只需停用高度限制并更新单元格布局即可。
您将需要将单元格的状态(已扩展或未扩展的状态)存储在某个位置,以便在上下滚动时可以正确启用/禁用高度限制。