【问题标题】:Autolayout minimum gap between UIStackViewsUIStackViews 之间的自动布局最小间隙
【发布时间】: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?
【问题讨论】:
标签:
ios
autolayout
ios-autolayout
uistackview
【解决方案1】:
您可以创建两个约束:第一个在 sv2 和 sv1 之间,第二个在 sv2 和 sv3 之间。诀窍是设置约束 not 等于 a 值但 大于。
【解决方案2】:
您可以在堆栈视图之间创建水平间距约束并将它们设置为大于或等于。这会照顾它们之间的最小空间。
但是由于它们要靠在一起,这意味着它们中的至少一个必须变小才能为分离腾出空间。您可以通过设置堆栈视图中视图的 内容压缩阻力 优先级来控制哪一个。值最低的那个会缩小。
如果所有三个堆栈视图都有不同的宽度,您还可以将中心约束的优先级降低到低于间距约束优先级的值。这意味着将中心视图推到一侧以腾出空间。
有很多可能性取决于您的确切观点。最好的方法是对优先级进行一些试验。