[英]UIButton size not updating automatically after updating button image, using autolayout
我有一个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中供参考。
隐藏的按钮仍会占用空间。 您也可以删除按钮而不是隐藏按钮...
infoButton.removeFromSuperview()
如果这样做,则在删除按钮时,标签和开关之间可能还需要额外的约束。 此约束应具有较低的优先级,以便在按钮可见时不发生冲突。
编辑:
进一步考虑,当在行之间重用单元格时,这可能会引起头痛。 您可能会发现,为按钮的宽度约束设置IBOutlet更容易,只需将其设置为零即可隐藏。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.