动态高度标签和文本字段

时间:2017-07-17 01:42:45

标签: ios autolayout

在下图中,他们有这些限制: enter image description here

我很困惑4-7的约束如何工作。此配方声称它在运行时基于最高控件(高度明智)动态设置控件的垂直间距(名称标签和名称文本视图)。因此,如果标签的固有高度为48(由于字体增加),文本视图的高度也会与名称标签的高度相匹配。我在代码中的任何地方都看不到这种关系:nameTextView.height = nameLabel.height + 0

同样在约束4中,它说它可能> =但是在约束5中它说它必须等于(具有较低的优先级)。系统如何决定在什么时间使用哪个约束?

来源:https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/ViewswithIntrinsicContentSize.html#//apple_ref/doc/uid/TP40010853-CH13-SW16

1 个答案:

答案 0 :(得分:1)

约束5和7用于定义接口的默认值,因为约束4和6是不等式并且接受多种可能性。

在这个例子中,他们从不说nameTextViewnameLabel必然是相同的高度。这四个限制实际上是在照顾他们不同的高度。

以下是他们的工作方式:

约束条件4和6定义了从顶部到nameLabelnameTextView的距离分别为CAN {(注意该术语)等于或大于20.所以如果你只设置这两个,如果Xcode实际上更大或相等,那么Xcode将会丢失,这就是为什么你需要具有低优先级约束(5和7)的原因,他们给Xcode提供了指导原则,即低优先级他们都是两者都是&# 34;开始"在20,然后程序试图满足4和6,通过检查谁更高(因为4和6允许20或更大):​​nameLabelnameTextView。如果nameLabel更高,则通过将其垂直距离设置为20来满足约束4,并且通过将nameTextView到顶部的垂直距离设置为大于20(通过它们的差异自动计算)来满足约束6高度)。现在,一切都满意,自动布局将成功!

希望这有帮助。