小于或等于约束总是相等的
less or equal constraint is always equal
我是 iOS 编程的新手,专门使用故事板。我试图实现一个 UILabel
应该有最大宽度但它应该根据里面的文本改变所以我给了它这些约束
在设置文本后的代码中我正在调用 sizeToFit()
但结果不是我想要的
如您所见,它总是相等的。我该如何解决?
问题是您的约束不明确。你是说 label
前导锚点必须大于或等于 superview
的前导锚点 + 16,并且 label
尾随锚点必须小于或等于 superview
的尾随锚点 - 16。但这意味着标签可以在这两个限制之间的任何地方。
您必须再添加至少一个约束,告诉自动布局 将标签放置在 的位置(恰好在这两个限制之间)。例如,添加一个约束说明 label
的 centerX 锚点应等于 superview
的 centerX 锚点。这会将 label
置于 view
的中心,而那些 >= 和 <= 约束将阻止该标签扩展超出这些限制。
编辑
此外,从故事板的显示方式来看,您的尾随 space 约束似乎不正确,您应该将其从 <=
更改为 >=
。确保在检查器中它是这样说的(你截图的视图非常混乱):
superview.trailing >= label.trailing + 16
和
label.leading >= superview.leading + 16
您希望前导和尾随 space 为 16 或更多 ,这意味着您需要 >= 约束。这样前导和尾随 space 可以增加以允许文本字段的固有宽度由其内容决定。
你现在的方式,前导和尾随 space 必须是 16 或更少 这意味着非常宽的文本字段内容可能会导致文本字段距前缘和后缘小于 16,但不能超过 16,因此在大多数情况下您会碰到 "equals" 部分。
我是 iOS 编程的新手,专门使用故事板。我试图实现一个 UILabel
应该有最大宽度但它应该根据里面的文本改变所以我给了它这些约束
在设置文本后的代码中我正在调用 sizeToFit()
但结果不是我想要的
如您所见,它总是相等的。我该如何解决?
问题是您的约束不明确。你是说 label
前导锚点必须大于或等于 superview
的前导锚点 + 16,并且 label
尾随锚点必须小于或等于 superview
的尾随锚点 - 16。但这意味着标签可以在这两个限制之间的任何地方。
您必须再添加至少一个约束,告诉自动布局 将标签放置在 的位置(恰好在这两个限制之间)。例如,添加一个约束说明 label
的 centerX 锚点应等于 superview
的 centerX 锚点。这会将 label
置于 view
的中心,而那些 >= 和 <= 约束将阻止该标签扩展超出这些限制。
编辑
此外,从故事板的显示方式来看,您的尾随 space 约束似乎不正确,您应该将其从 <=
更改为 >=
。确保在检查器中它是这样说的(你截图的视图非常混乱):
superview.trailing >= label.trailing + 16
和
label.leading >= superview.leading + 16
您希望前导和尾随 space 为 16 或更多 ,这意味着您需要 >= 约束。这样前导和尾随 space 可以增加以允许文本字段的固有宽度由其内容决定。
你现在的方式,前导和尾随 space 必须是 16 或更少 这意味着非常宽的文本字段内容可能会导致文本字段距前缘和后缘小于 16,但不能超过 16,因此在大多数情况下您会碰到 "equals" 部分。