我有一个UIButton,它受到前导,尾随和中心垂直约束的约束。按钮左侧的标签会一直增长,直到按钮的尾随约束(大于约束)达到限制,此时按钮不会移动得更靠近开关,标签文本开始截断。
有一种情况是按钮设置为隐藏。当标签中有长文本时,这会在标签和开关之间产生额外的间隙。我将按钮的图像设置为nil,并期望它根据约束调整大小,但它永远不会。
以下是试图强制调整大小的代码:
func hideInfoButon(hide: Bool) {
infoButton.hidden = hide
if hide {
infoButton.setImage(nil, forState: .Normal)
} else {
infoButton.setImage(UIImage(named: "icn_info_gry"), forState: .Normal)
}
setNeedsUpdateConstraints()
setNeedsLayout()
}
我已经确认正确调用了hide方法,并且图像实际上被设置为nil。我确认没有隐藏按钮并给它背景颜色以使其可见。
是否有解决方案不需要我为按钮添加宽度约束?
内容在tableViewCell中供参考。
答案 0 :(得分:0)
<强> 1。将约束添加到标签
<强> 2。将约束添加到信息按钮
第3。信息按钮尾随空格必须是标准间距
<强> 4。创建信息按钮宽度IBOutlet赞
<强> 5。当你想隐藏按钮设置宽度约束0
infoButtonWidth.constant=0
答案 1 :(得分:-1)
隐藏按钮仍会占用空间。你也可以删除按钮而不是隐藏它......
infoButton.removeFromSuperview()
如果这样做,在删除按钮时,标签和开关之间可能还需要额外的约束。此约束应具有较低的优先级,以便在按钮可见时不会发生冲突。
编辑:
进一步思考,当在行之间重用单元格时,这可能会引起麻烦。您可能会发现为按钮的宽度约束设置IBOutlet更容易,只需将其设置为零即可隐藏。