2017-01-12 86 views
0

我試圖爲UITableViewCell做兩個不同的狀態,但是當我改變單元格的大小時,這個改變突破了很多約束AutoLayout。 這兩種狀態是:UITableViewCell和AutoLayout兩個狀態中斷約束條件

enter image description here

enter image description here

  • 黃色是細胞
  • 灰色是定製UIView
  • 橙色是另一個UIView一個
  • 紅裏面有兩種UILabel內B

初始狀態展開,但是當我減少行的height改變到摺疊狀態時,許多限制(主要是UIView BUILabels)打破AutoLayout

步驟:

  1. 冰凍圈對細胞,並更改單元格的大小
  2. 隱藏UIView B
  3. 重新加載UITableView

有沒有辦法避免破壞約束?也許兩種不同的電池設計?

謝謝!

+0

您將需要包括你對這些對象的約束我們幫您 –

+0

你不能只是改變細胞的大小。例如,UITableView需要reloadData,然後你可以改變它。 – mattsson

+0

@MSU_Bulldog我使用約束條件更新了圖像 – mhergon

回答

1

在你的情況下,更好的解決方案是使用兩個具有不同標識符的單元格 - 一個包含視圖A,另一個包含視圖A,B。那麼你可以根據你的需要.dequeueReusableCell(withIdentifier: %CELL_A_OR_CELL_B_IDENTIFIER%, for: indexPath)

較不合適的解決方案是使用堆棧視圖或調整約束。在這兩種情況下,避免衝突和防止錯誤佈局的唯一方法是正確設置約束優先級。我會嘗試在圈優先級設置約束東西少1000(如990)

enter image description here

+0

謝謝,作品完美! – mhergon