我正在面對使用自動佈局自動調整尺寸單元的問題。我的目標是取得一個表,這將是這個樣子:IOS - 自我尺寸單元問題
| Title_label (time) $price |
| |
|Some long description. More |
|description. |
| |
當標題很長,應該是這樣的:
| This title is (time) $price |
| really long |
| |
|Some long description. More |
|description. |
| |
所以當標題變大它推時間標籤的只要有8分的空間時間和價格。如果它更大,它應該換行到下一行。
我已經完成表視圖與自我大小的單元格,但只有一個擴展標籤,而不是兩個。
我已經實現了連續的自動高度:
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 100
這是我的約束什麼樣子:
| 8px
|8px title 8px time >=8px price|
| 8px |
|8px description 8px|
| 8px |
也有價格的時間和標題之間的頂部對齊。
我已經將標題和描述的行數設置爲0. 我已經將時間和價格的壓縮抵抗設置爲1000(因爲標題與它們重疊)。
但標題標籤不會換行到下一行。它以....結束。更多描述標籤也太小。當我滾動表格desription的高度是固定的。
我已經嘗試在返回單元格之前添加cell.layoutIfNeeded()。然後單元格佈局變得混亂(標題被剪裁),但是當我滾動tV時,一切正常。
任何想法?
編輯: 這是因爲標題標籤旁邊的其他標籤,它不知道它什麼時候應該包裝?
我試圖
override func layoutSubviews() {
self.nameLabel.preferredMaxLayoutWidth -= (durationLabel.frame.width + priceLabel.frame.width + 16)
super.layoutSubviews()
}
告訴標題標籤是什麼它的最大寬度,但它攪亂的事情了。
感謝您的回答,不幸的是它不適用於我(沒有layoutIfNeeded())。添加layoutIfNeeded()標題標籤後,我收到了很多NSConstraints錯誤。描述仍然被截斷。 – Cahir09
我創建了新的測試項目並按照您的建議設置了所有約束,壓縮和擁抱屬性。但標題仍被截斷。如果在返回單元格之前添加layoutIfNeeded,它看起來很好,但是存在一堆佈局約束錯誤。好消息是顯示整個描述。在我的項目中,數據是從WS加載的,使用適當的數據填充單元有點複雜。它可能是描述被切斷的原因嗎?我的意思是細胞在顯示之前無法計算其高度?如果你仍然有你的示例項目,你可以上傳並分享鏈接? – Cahir09
我只在IB上試過它,但它工作正常。一旦有空閒時間,我會安排一個項目。 – Daniel