image illustration 我有一个UITableViewCell。在此单元格的内容视图中,从上到下,我都有一个头像UIImageView(1),一个UILabel(2),一个用于折叠/展开UILabel(3)的按钮,一个UICollectionView(4),一个UIStackView(5) ),并假装是表格单元格之间的边距的UIView(6)。
每个对象的顶部约束与上方对象的底部约束连接。除了UILabel(2),其他所有对象都具有一定的高度。对于标签,我给它一个约束,要求其高度小于或等于96(5行的高度)。
点击按钮(3)之后,我取消了标签的高度限制并尝试更新框架,希望标签将占据显示所有文本所需的高度。
@IBAction func foldButtonTapped(_ sender: UIButton) {
if isFoldContent {
checkinContentLabelBottomConstraint.isActive = false
sender.setTitle("收起", for: .normal)
} else {
checkinContentLabelBottomConstraint.isActive = true
sender.setTitle("展开", for: .normal)
}
isFoldContent = !isFoldContent
self.setNeedsUpdateConstraints()
self.setNeedsLayout()
self.setNeedsDisplay()
self.layoutIfNeeded()
}
不幸的是,在我点击按钮后,尽管constraint.isActive
的布尔值和标签高度值都被更改为正确的值,但是标签区域并没有展开,这意味着仍然没有显示折叠的文本。enter image description here
答案 0 :(得分:0)
要使其正常工作,您需要做两件事: 1.使用“ UITableViewAutomaticDimensions” 2.确保您的单元xib从上到下定义了垂直约束。