UIStackViews 之间的自动布局最小间隙

Posted

技术标签:

【中文标题】UIStackViews 之间的自动布局最小间隙【英文标题】:Autolayout minimum gap between UIStackViews 【发布时间】:2018-11-22 20:06:30 【问题描述】:

我有 3 个 UIStackViews 边到边放置如下:

   SV1 ---- SV2 ---- SV3

SV1 与超级视图前导的固定距离为 5 点,SV2 中心与超级视图的中心对齐,SV3 与视图尾随的固定距离为 5 点。问题出在 iPhone SE 上,SV2 太宽,太靠近 SV1 和 SV3。如何设置自动布局约束,以使 SV2 与 SV1 和 SV3 的最小距离 D?

【问题讨论】:

【参考方案1】:

您可以创建两个约束:第一个在 sv2 和 sv1 之间,第二个在 sv2 和 sv3 之间。诀窍是设置约束 not 等于 a 值但 大于

【讨论】:

【参考方案2】:

您可以在堆栈视图之间创建水平间距约束并将它们设置为大于或等于。这会照顾它们之间的最小空间。

但是由于它们要靠在一起,这意味着它们中的至少一个必须变小才能为分离腾出空间。您可以通过设置堆栈视图中视图的 内容压缩阻力 优先级来控制哪一个。值最低的那个会缩小。

如果所有三个堆栈视图都有不同的宽度,您还可以将中心约束的优先级降低到低于间距约束优先级的值。这意味着将中心视图推到一侧以腾出空间。

有很多可能性取决于您的确切观点。最好的方法是对优先级进行一些试验。

【讨论】:

以上是关于UIStackViews 之间的自动布局最小间隙的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局在对象之间创建间隙

启用 UIButton 的间距或 contentEdgeInsets 时,UIStackViews 自动布局抛出

使用自动布局隐藏视图和相邻间隙

具有自动布局的 NSTextFields;像打字一样长进太空

上视图和表格视图顶部单元格之间的间隙

消除 flexbox 布局中行之间的大间隙 [重复]