UIView-Encapsulated-Layout-Width / Height约束为零

时间:2015-07-20 15:10:39

标签: uitableview autolayout

关于UITableView单元格和节页眉/页脚的自动布局存在许多堆栈溢出问题,这些问题涉及UIView-Encapsulated-Layout-Width用于使其组件成为的UITableView约束正确的大小:

这些约束的目的似乎很清楚 - 它们允许UITableViewUICollectionView与约束布局接口,并传递关于大单元(和其他组件)应该如何的规范。 / p>

大多数问题似乎是人们有一组必需的约束,这些约束与这些封装约束不兼容,同时需要0的大小。最可行的答案似乎是将用户定义的约束的优先级降低到999,以便框架可以推翻它们。

但是 - 我对理解感兴趣的是 UITableView为什么要求0宽度为0这是一个错误吗?或者是不正确使用的结果?或者它是否具有完美意义?

如果细胞从无到有扩展,0的高度限制有时是有意义的。降低优先级是处理此问题的好方法。但为什么单元格的{strong>宽度为{{1}}?

1 个答案:

答案 0 :(得分:1)

UIView没有内在大小,因此需要宽度和高度限制。 最初由UICollectionView / UITableView创建 UIView-Encapsulated-Layout-Width UIView-Encapsulated-Layout-Height 。然后根据sizeForItem或heightForRowAtIndexPath委托方法设置约束常量。确保在cellForItem / cellForRow方法中创建的UICollectionViewCell / UITableViewCell具有确切的大小。