UITableViewCell 和 AutoLayout 打破约束的两种状态
Two states on UITableViewCell and AutoLayout breaking constraints
我正在尝试为 UITableViewCell
设置两种不同的状态,但是当我更改单元格的大小时,此更改打破了许多限制 AutoLayout
。
这两个状态是:
- 黄色是单元格
- 灰色是定制的
UIView
- A
里面的另一个UIView
- 红色在B
里面有两个UILabel
初始状态是展开的,但是当我减少行的 height
以更改为折叠状态时,许多约束(主要是 UIView B
和 UILabels
)打破 AutoLayout
步骤:
- 点击单元格,改变单元格的大小
- 隐藏
UIView
B
- 重新加载
UITableView
有没有什么方法或方法可以避免破坏约束?也许是两种不同的电池设计?
谢谢!
在您的情况下,更好的解决方案是使用两个具有不同标识符的单元格 - 一个包含视图 A,另一个包含视图 A、B。然后你可以.dequeueReusableCell(withIdentifier: %CELL_A_OR_CELL_B_IDENTIFIER%, for: indexPath)
根据你的需要。
不太合适的解决方案是使用堆栈视图或调整您的约束。在这两种情况下,避免冲突和防止不正确布局的唯一方法是正确设置约束优先级。我会尝试将圆圈优先级的约束设置为小于 1000(如 990)
我正在尝试为 UITableViewCell
设置两种不同的状态,但是当我更改单元格的大小时,此更改打破了许多限制 AutoLayout
。
这两个状态是:
- 黄色是单元格
- 灰色是定制的
UIView
- A 里面的另一个
- 红色在B 里面有两个
UIView
UILabel
初始状态是展开的,但是当我减少行的 height
以更改为折叠状态时,许多约束(主要是 UIView B
和 UILabels
)打破 AutoLayout
步骤:
- 点击单元格,改变单元格的大小
- 隐藏
UIView
B - 重新加载
UITableView
有没有什么方法或方法可以避免破坏约束?也许是两种不同的电池设计?
谢谢!
在您的情况下,更好的解决方案是使用两个具有不同标识符的单元格 - 一个包含视图 A,另一个包含视图 A、B。然后你可以.dequeueReusableCell(withIdentifier: %CELL_A_OR_CELL_B_IDENTIFIER%, for: indexPath)
根据你的需要。
不太合适的解决方案是使用堆栈视图或调整您的约束。在这两种情况下,避免冲突和防止不正确布局的唯一方法是正确设置约束优先级。我会尝试将圆圈优先级的约束设置为小于 1000(如 990)