较小或相等的约束总是相等的

时间:2018-02-08 19:55:36

标签: ios xcode storyboard

我是专门使用Storyboard的iOS编程新手。我试图获得一个UILabel,它应该有一个最大宽度,但它应该根据里面的文字改变,所以我给了它这些约束

enter image description here

并在设置文字后的代码中我打电话给sizeToFit(),但结果不是我想要的

enter image description here

你可以看到它始终是平等的。我该如何解决?

2 个答案:

答案 0 :(得分:1)

问题在于你的约束是模棱两可的。你是说label前导锚必须大于或等于superview前导锚+ 16,而label尾随锚必须小于或等于至superview的尾随锚点 - 16.但这意味着该标签在这两个限制之间可以任何地方

您必须添加至少一个约束,该约束将告诉autolayout where 放置该标签(恰好在这两个限制之间)。例如,添加约束,表示label的centerX锚点应该等于superview的centerX锚点。这会将label置于view的中心,而那些> =和< =约束会使该标签不会超出这些限制。

修改

此外,从故事板的显示方式看,您的尾随空间约束不正确,您应该将其从<=更改为>=。确保在检查器中它说明了这一点(截图的视图非常令人困惑):

enter image description here

  

superview.trailing >= label.trailing + 16

  

label.leading >= superview.leading + 16

答案 1 :(得分:1)

您希望前导和尾随空格 16或更多,这意味着您需要&gt; =约束。这样,前导和尾随空间可以增加以允许由其内容确定的文本字段的固有宽度。

现在的方式,前导和尾随空格必须 16或更少这意味着非常宽的文本字段内容可能导致文本字段小于16后缘但它不能超过16,因此在大多数情况下你会打到“等于”部分。