我有一个自我调整大小的tableViewCell,它提供了评论。如果当前用户评论我提出编辑和删除按钮。在这种情况下,我的约束完美。我的所有约束都在Interface Builder中设置。
现在的挑战是,当评论不属于用户时,我为编辑和删除按钮设置.isHidden = true。如何调整此新方案的约束?
编辑:问题是当我在按钮上将.isHidden设置为true时,我希望当按钮空间为空时,单元格高度会缩小。
答案 0 :(得分:1)
你可以这样做:
您可以:
而不是隐藏buttons
1。将UIButton
title
设为nil
。
2。只要您想要隐藏按钮,就可以IBOutlet
UIButton
height constraint
并将其设置为0
。
示例:强>
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return 2
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableCell
if indexPath.row == 1
{
cell.button.setTitle(nil, for: .normal)
cell.buttonHeightConstraint.constant = 0
}
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
return UITableViewAutomaticDimension
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat
{
return UITableViewAutomaticDimension
}
自定义UITableViewCell
:
class TableCell: UITableViewCell
{
@IBOutlet weak var button: UIButton!
@IBOutlet weak var buttonHeightConstraint: NSLayoutConstraint!
}
<强>截图:强>
这将根据您的要求处理约束。
答案 1 :(得分:1)
另一种方法:
将约束的.isActive
状态从按钮底部切换到单元格的底部,以及.isHidden
状态。
为此,请将date
标签底部的垂直空间约束添加到单元格的底部,设置为>= 4
(或按钮所需的“填充”数量。不存在)。
为“间距约束”添加@IBOutlet
,从“编辑”按钮的底部到单元格的底部。在您的图片中,它显示为bottom = Edit Button.bottom + 2
。当您将约束从IB拖动到源文件时,它将生成如下所示的IBOutlet行:
@IBOutlet weak var editButtonBottomConstraint: NSLayoutConstraint!
您需要编辑该行,但是...禁用时会释放约束,除非您有一个“强”引用。因此,只需删除weak
修饰符:
@IBOutlet var editButtonBottomConstraint: NSLayoutConstraint!
现在,在cellForRowAt
,你可以这样做:
cell.deleteButton.isHidden = !(comment.userID == appUserID)
cell.editButton.isHidden = !(comment.userID == appUserID)
cell.editButtonBottomConstraint.isActive = (comment.userID == appUserID)
虽然,就个人而言,我会在单元格中创建一个函数。
但是,根据您的手机设计,我猜测commentsLabel
可能/可能是多线标签?如果评论是8行,你会希望细胞垂直扩展吗?如果是这样,你仍然有一些约束关系可以解决。