【问题标题】:Auto-Layout: "center horizontally" does not seem to resolve inequality ambiguity of width/x-position, within a UICollectionViewCell自动布局:“水平居中”似乎无法解决 UICollectionViewCell 内宽度/x 位置的不平等歧义
【发布时间】:2020-12-25 09:13:59
【问题描述】:

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

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

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

  • 缺少约束:需要约束:X 位置、宽度
  • 不等式约束歧义:inner.leading

建议的水平约束:

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

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

【问题讨论】:

    标签: ios swift autolayout interface-builder nslayoutconstraint


    【解决方案1】:

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

    • innerleading

    • inner 尾随 >= 超级视图尾随

    • innercenterX == superview centerX

    • inner width == 6,优先级为 999

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

    【讨论】:

    • 感谢优先级 = 999 的提示,我没有考虑过以这种方式使用优先级。是的,我认为 IB 错误是虚假的,所以我添加了一些占位符约束并在运行时进行了更改。
    猜你喜欢
    • 2019-09-10
    • 1970-01-01
    • 2022-01-07
    • 2015-12-28
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    相关资源
    最近更新 更多