[英]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.