我在 TableViewCell 中填充了数据。例如,我只想显示一个标签,在用户单击单元格后,单元格将调整大小并向用户显示所有数据。我已经完成了调整部分的大小,但是当单元格很小时它会自动更改我的约束。有人可以帮我吗?代码和照片如下。
谢谢!
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if (i != indexPath.row) {
i = indexPath.row
}
else {
i = -1
}
tableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.automatic)
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if (indexPath.row == i) {
return 250
}
else {
return 50
}
}
最佳答案
当单元格的高度为 50 时,您的约束将被打破,因为没有足够的空间来容纳它们,因为您希望它们被布置。因此,单元格的高度在您添加到单元格内的元素的任何其他约束之前得到遵守,因此它们被挤压在一起。
要消除约束错误,请尝试使用约束的优先级和关系模式。
最后,当您的单元格折叠时,您可以隐藏除您要显示的标签之外的所有其他标签,方法是在应该隐藏的标签上调用以下命令:
label.hidden = true
或者像这样为它们的消失设置动画:
UIView.animate(withDuration: 0.2, animations: {
label.alpha = 0
}, completion: { completed -> Void in
label.hidden = true
})
当你扩展单元格时,做相反的事情让它们重新出现。
关于ios - 单击后 UITableViewCell 调整大小,约束发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40821867/