UITableViewCell和AutoLayout上的两个状态打破了约束

时间:2017-01-12 15:24:49

标签: ios uitableview autolayout tableviewcell

我尝试为UITableViewCell执行两种不同的状态,但是当我更改单元格的大小时,此更改会破坏许多约束AutoLayout。 这两个州是:

enter image description here

enter image description here

  • 黄色是细胞
  • 格雷是自定义UIView
  • 橙色是A
  • 中的另一个UIView
  • 红色是B
  • 中的两个UILabel

初始状态展开但当我将行的height缩小为折叠状态时,许多约束(主要是UIView BUILabels)会中断AutoLayout

步骤:

  1. Clic on cell,并更改单元格的大小
  2. 隐藏UIView B
  3. 重新加载UITableView
  4. 有没有办法或办法避免违反限制?也许有两种不同的电池设计?

    谢谢!

1 个答案:

答案 0 :(得分:1)

在您的情况下,更好的解决方案是使用具有不同标识符的两个单元格 - 一个包含视图A,另一个包含视图A,B。然后你可以根据自己的需要.dequeueReusableCell(withIdentifier: %CELL_A_OR_CELL_B_IDENTIFIER%, for: indexPath)

不太合适的解决方案是使用堆栈视图或调整约束。在这两种情况下,避免冲突和防止错误布局的唯一方法是正确设置约束优先级。我会尝试将圈数优先级的约束设置为小于1000(如990)

enter image description here