自动布局:"center horizontally" 似乎无法解决 UICollectionViewCell 中 width/x-position 的不等式歧义
Auto-Layout: "center horizontally" does not seem to resolve inequality ambiguity of width/x-position, within a UICollectionViewCell
假设我有一个名为 inner
的 UIView
,它是 Interface Builder 中 UICollectionViewCell
的 Content View
的子视图。 collection view 使用流式布局,并使用 collectionView(_:layout:sizeForItemAt:)
来确定布局时单元格的大小。
我希望 inner
占据单元格的整个宽度,但是如果单元格的宽度小于 6
那么 inner
应该在单元格中水平居中并且6
的宽度(clipsToBounds
在单元格和单元格的 Content View
上是 false
)。
“应该”下方的水平约束足以做到这一点,但 Interface Builder 向我显示了两个错误:
- 缺少约束:需要约束:X 位置、宽度
- 不等式约束歧义:inner.leading <= leading
提议的水平约束:
- inner.centerX = centerX
- inner.trailing >= 尾随
- inner.leading <= 领先
- inner.width >= 6
为什么这还不够?跟sizeForItemAt:
有关系吗?
Interface Builder 的投诉可能是虚假的。最好 运行 应用程序并查看 View Debugger 中发生的情况。我能够像这样实现你的目标:
inner
领先 <= superview 领先
inner
尾随 >= superview 尾随
inner
centerX == superview centerX
inner
宽度 == 6,优先级为 999
结果看起来不错。视图调试器没有报错,所以我认为我的设置是有效的。
假设我有一个名为 inner
的 UIView
,它是 Interface Builder 中 UICollectionViewCell
的 Content View
的子视图。 collection view 使用流式布局,并使用 collectionView(_:layout:sizeForItemAt:)
来确定布局时单元格的大小。
我希望 inner
占据单元格的整个宽度,但是如果单元格的宽度小于 6
那么 inner
应该在单元格中水平居中并且6
的宽度(clipsToBounds
在单元格和单元格的 Content View
上是 false
)。
“应该”下方的水平约束足以做到这一点,但 Interface Builder 向我显示了两个错误:
- 缺少约束:需要约束:X 位置、宽度
- 不等式约束歧义:inner.leading <= leading
提议的水平约束:
- inner.centerX = centerX
- inner.trailing >= 尾随
- inner.leading <= 领先
- inner.width >= 6
为什么这还不够?跟sizeForItemAt:
有关系吗?
Interface Builder 的投诉可能是虚假的。最好 运行 应用程序并查看 View Debugger 中发生的情况。我能够像这样实现你的目标:
inner
领先 <= superview 领先inner
尾随 >= superview 尾随inner
centerX == superview centerXinner
宽度 == 6,优先级为 999
结果看起来不错。视图调试器没有报错,所以我认为我的设置是有效的。