如何将视图保持在最大宽度,直到前导/尾随尺寸变得太小?

Posted

技术标签:

【中文标题】如何将视图保持在最大宽度,直到前导/尾随尺寸变得太小?【英文标题】:How to keep view at max width until leading/trailing dimension becomes too small? 【发布时间】:2017-03-13 21:22:01 【问题描述】:

我正在为 Interface Builder 中的自动布局而苦苦挣扎。

我的布局如下:

-------------------------------
|                             |
|    _____________________    |
|    |                   |    |
|<-->|      UILabel      |<-->|
|    |                   |    |
|    ---------------------    |
|    <------------------->    |
-------------------------------

我想要完成的事情: 我希望 UILabel 的宽度为 300,除非左边距/右边距小于 30。在这种情况下,UILabel 的宽度必须更小,因此左边距/右边距始终为 30。

我尝试了什么: UIL标签宽度:Less then or equal: 300 左/右前导/尾随:Greater than or equal: 30

这适用于不适合 360 宽度的布局,因此 UILabel 会变小。但是,当我有 400 宽度可用时,UILabel 变为 280,Leading/Trailing 变为 50...

我尝试了不同的优先级,但似乎没有任何效果。我还尝试将 UILabel 宽度约束设置为 equal,但这不适用于小于 360 的宽度。

这个问题有解决办法吗?

【问题讨论】:

尝试将前导/尾随约束简单地设置为 30,但将宽度约束的优先级设置为 750。这样,无论视图的大小如何,左右约束都将是30. 看看hugging priotity这应该可以解决你的问题。 【参考方案1】:

在您的标签上试试这个...:

将前导和尾随都设置为大于或等于:30 将宽度设置为 300,优先级为 999

应该做你需要的。

【讨论】:

是的,我确认,这是我首先要做的。你能告诉我们它是否有效吗? 一开始不起作用,但我删除了标签并阅读了它,然后应用了您的解决方案。现在它完美运行了! 不适用于 Xcode 9。您能确认一下吗? @SRP-Achiever - “不适用于 Xcode 9” - 你需要更具描述性...我刚刚用 Xcode 9 尝试过,部署目标 ios 11.0,它似乎符合预期。 嗯,是的,整个目的是每边的空间相等(最小 30-pts),标签宽度最大为 300-pts。如果您尝试做一些不同的事情,那么不,我不希望这会做您想做的任何事情。【参考方案2】:

UILabel 一个宽度300 并将优先级设置为High。 左/右前导/尾随:30 优先级为 Required。 这应该可以。

【讨论】:

以上是关于如何将视图保持在最大宽度,直到前导/尾随尺寸变得太小?的主要内容,如果未能解决你的问题,请参考以下文章

如何在图像视图周围制作圆形边框

没有显式宽度限制且尾随空间大于或等于行为不端的自动布局

Xcode 不允许视图保持水平居中

SwiftUI:如何使用边距 10 修复前导和尾随

iOS 自动布局更改前导和尾随空格

UILabel尺寸更改不会使用自动布局设置动画