Ios 动态设置uitableviewcell的高度

Ios 动态设置uitableviewcell的高度,ios,swift,constraints,Ios,Swift,Constraints,我有一个tableview单元格,其中包含名称、图像、注释、附件和“喜欢”按钮。附件是可选的。如果存在任何附件,则该附件应具有固定高度约束,否则为0。单元格是通过编程方式创建的。问题是,虽然注释大小的动态高度正在发生,但附件的动态高度没有设置,并导致波动。我正在附上下面的代码。谁能帮忙吗 override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?){ super.init(style: style,

我有一个tableview单元格,其中包含名称、图像、注释、附件和“喜欢”按钮。附件是可选的。如果存在任何附件,则该附件应具有固定高度约束,否则为0。单元格是通过编程方式创建的。问题是,虽然注释大小的动态高度正在发生,但附件的动态高度没有设置,并导致波动。我正在附上下面的代码。谁能帮忙吗

 override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?){
    super.init(style: style, reuseIdentifier: reuseIdentifier)
    
    backgroundColor = .clear
    
    contentView.addSubview(backView)
    contentView.addSubview(descLabel)
    contentView.addSubview(userImage)
    contentView.addSubview(posterLabel)
    contentView.addSubview(likeBtn)
    contentView.addSubview(flagBtn)
    contentView.addSubview(likeLabel)
    contentView.addSubview(flagLabel)
    contentView.addSubview(commentImage)
    
    NSLayoutConstraint.activate([
        userImage.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 25),
        userImage.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 25),
        userImage.heightAnchor.constraint(equalToConstant: 40),
        userImage.widthAnchor.constraint(equalToConstant: 40),
        
        posterLabel.leadingAnchor.constraint(equalTo: userImage.trailingAnchor, constant: 8),
        posterLabel.centerYAnchor.constraint(equalTo: userImage.centerYAnchor),
        posterLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -16),
        
        descLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 25),
        descLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -25),
        descLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 75),            descLabel.heightAnchor.constraint(greaterThanOrEqualToConstant: 30),
        
        commentImage.leadingAnchor.constraint(equalTo: descLabel.leadingAnchor),
        commentImage.widthAnchor.constraint(equalToConstant: 50),
        commentImage.topAnchor.constraint(equalTo: descLabel.bottomAnchor, constant: 8),
        
        likeBtn.leadingAnchor.constraint(equalTo: userImage.leadingAnchor),
        likeBtn.heightAnchor.constraint(equalToConstant: 30),
        likeBtn.widthAnchor.constraint(equalToConstant: 30),
        likeBtn.topAnchor.constraint(equalTo: commentImage.bottomAnchor, constant: 12),
        likeBtn.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -12),
        
        likeLabel.leadingAnchor.constraint(equalTo: likeBtn.trailingAnchor, constant: 0),
        likeLabel.bottomAnchor.constraint(equalTo: likeBtn.bottomAnchor, constant: -4),
        
        flagBtn.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -40),
        flagBtn.heightAnchor.constraint(equalToConstant: 30),
        flagBtn.widthAnchor.constraint(equalToConstant: 30),
        flagBtn.bottomAnchor.constraint(equalTo: likeBtn.bottomAnchor),
        
        flagLabel.leadingAnchor.constraint(equalTo: flagBtn.trailingAnchor, constant: 0),
        flagLabel.bottomAnchor.constraint(equalTo: flagBtn.bottomAnchor, constant: -4),
        
        backView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 12),
        backView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 12),
        backView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -4),
        backView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -12),
    ])
    
    commentImageHeightConstraint = commentImage.heightAnchor.constraint(equalToConstant: 0)
    commentImageHeightConstraint?.isActive = true
    
    likeBtn.addTarget(self, action: #selector(voteComment(sender:)), for: UIControl.Event.touchUpInside)
    flagBtn.addTarget(self, action: #selector(flagComment(sender:)), for: UIControl.Event.touchUpInside)
}

要使附件成为可选附件,您应该将附件放入堆栈视图中,然后根据需要隐藏/显示它因此,当您将stackView中的附件隐藏时,附件的高度将为0,这意味着它将消失,反之亦然。 例如:

如果你想显示按钮

    button.isHidden = true
//Button will be shown like miracle.

要使附件成为可选附件,您应该将附件放入堆栈视图中,然后根据需要隐藏/显示它因此,当您将stackView中的附件隐藏时,附件的高度将为0,这意味着它将消失,反之亦然。 例如:

如果你想显示按钮

    button.isHidden = true
//Button will be shown like miracle.

要使附件成为可选的,您应该将附件放在stackView中,然后根据需要隐藏/显示它。所以当你们在stackView中隐藏附件时,附件的高度将为0,这意味着它将消失,反之亦然。好的,我会试着回去。谢谢你的介绍。退出。嘿,谢谢,忘了通知,它像一个符咒一样工作。请让我给出正确的答案并结束这个问题。提前感谢。完成配对(y)(y)要使附件成为可选附件,您应该将附件放在stackView中,然后根据需要隐藏/显示。所以当你们在stackView中隐藏附件时,附件的高度将为0,这意味着它将消失,反之亦然。好的,我会试着回去。谢谢你的介绍。退出。嘿,谢谢,忘了通知,它像一个符咒一样工作。请让我给出正确的答案并结束这个问题。提前谢谢,伙计