快速修改代码中的高度约束后,UILabel不显示全文

时间:2019-09-08 16:47:30

标签: swift xcode

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

1 个答案:

答案 0 :(得分:0)

要使其正常工作,您需要做两件事: 1.使用“ UITableViewAutomaticDimensions” 2.确保您的单元xib从上到下定义了垂直约束。