如何将视图保持在最大宽度,直到前导/尾随尺寸变得太小?
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
。
这应该可以。
【讨论】:
以上是关于如何将视图保持在最大宽度,直到前导/尾随尺寸变得太小?的主要内容,如果未能解决你的问题,请参考以下文章