我有一個自定義tableview +自定義單元格,使用基於約束的自動佈局構建(全部以編程方式,無IB)。在每個單元格中都有(可能)多行標籤和其他文字。自動佈局的第一個計算很好 - 即UILabel根據其文本長度正確包裝。iOS:如何在其accessoryView更改時觸發tableViewCell的約束/自動佈局刷新?
但是,我選擇一個單元格(即從UITableViewCellAccessoryNone更改爲UITableViewCellAccessoryCheckmark)並且UILabel.text所需行數應該改變 - 但是保持不變,但我仍然有相同的佈局問題。
我想...
[myTableView reloadData];
和
[myTableView beginUpdate];
[myTableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
[myTableView endUpdates];
...在委託小區選擇,但必須用於更新單元的佈局沒有成功。
我想我需要告訴系統重新評估tableviewcell的約束(特別是重新評估爲UILabel的preferredMaxLayoutWidth。)但我不知道如何以正確的方式做到這一點。 (我用setNeedsUpdate嘗試了一些東西,但試用了錯誤式。)
在此先感謝您指引我朝着正確的方向!
爲你提供首選最大版面寬度上約束更新多標籤 - (空)updatePreferredMaxLayoutWidth:(的UILabel *)標籤 { label.preferredMaxLayoutWidth = [label alignmentRectForFrame:label.frame] .size.width; } – Vizllx