我是专门使用Storyboard的iOS编程新手。我试图获得一个UILabel
,它应该有一个最大宽度,但它应该根据里面的文字改变,所以我给了它这些约束
并在设置文字后的代码中我打电话给sizeToFit()
,但结果不是我想要的
你可以看到它始终是平等的。我该如何解决?
答案 0 :(得分:1)
问题在于你的约束是模棱两可的。你是说label
前导锚必须大于或等于superview
前导锚+ 16,而label
尾随锚必须小于或等于至superview
的尾随锚点 - 16.但这意味着该标签在这两个限制之间可以任何地方。
您必须添加至少一个约束,该约束将告诉autolayout where 放置该标签(恰好在这两个限制之间)。例如,添加约束,表示label
的centerX锚点应该等于superview
的centerX锚点。这会将label
置于view
的中心,而那些> =和< =约束会使该标签不会超出这些限制。
修改强>
此外,从故事板的显示方式看,您的尾随空间约束不正确,您应该将其从<=
更改为>=
。确保在检查器中它说明了这一点(截图的视图非常令人困惑):
superview.trailing >= label.trailing + 16
和
label.leading >= superview.leading + 16
答案 1 :(得分:1)
您希望前导和尾随空格 16或更多,这意味着您需要&gt; =约束。这样,前导和尾随空间可以增加以允许由其内容确定的文本字段的固有宽度。
现在的方式,前导和尾随空格必须 16或更少这意味着非常宽的文本字段内容可能导致文本字段小于16后缘但它不能超过16,因此在大多数情况下你会打到“等于”部分。