自动布局:"center horizontally" 似乎无法解决 UICollectionViewCell 中 width/x-position 的不等式歧义

Auto-Layout: "center horizontally" does not seem to resolve inequality ambiguity of width/x-position, within a UICollectionViewCell

假设我有一个名为 innerUIView,它是 Interface Builder 中 UICollectionViewCellContent View 的子视图。 collection view 使用流式布局,并使用 collectionView(_:layout:sizeForItemAt:) 来确定布局时单元格的大小。

我希望 inner 占据单元格的整个宽度,但是如果单元格的宽度小于 6 那么 inner 应该在单元格中水平居中并且6 的宽度(clipsToBounds 在单元格和单元格的 Content View 上是 false)。

“应该”下方的水平约束足以做到这一点,但 Interface Builder 向我显示了两个错误:

提议的水平约束:

  1. inner.centerX = centerX
  2. inner.trailing >= 尾随
  3. inner.leading <= 领先
  4. inner.width >= 6

为什么这还不够?跟sizeForItemAt:有关系吗?

Interface Builder 的投诉可能是虚假的。最好 运行 应用程序并查看 View Debugger 中发生的情况。我能够像这样实现你的目标:

  • inner 领先 <= superview 领先

  • inner 尾随 >= superview 尾随

  • inner centerX == superview centerX

  • inner 宽度 == 6,优先级为 999

结果看起来不错。视图调试器没有报错,所以我认为我的设置是有效的。