我很困惑4-7的约束如何工作。此配方声称它在运行时基于最高控件(高度明智)动态设置控件的垂直间距(名称标签和名称文本视图)。因此,如果标签的固有高度为48(由于字体增加),文本视图的高度也会与名称标签的高度相匹配。我在代码中的任何地方都看不到这种关系:nameTextView.height = nameLabel.height + 0
?
同样在约束4中,它说它可能> =但是在约束5中它说它必须等于(具有较低的优先级)。系统如何决定在什么时间使用哪个约束?
答案 0 :(得分:1)
约束5和7用于定义接口的默认值,因为约束4和6是不等式并且接受多种可能性。
在这个例子中,他们从不说nameTextView
和nameLabel
必然是相同的高度。这四个限制实际上是在照顾他们不同的高度。
以下是他们的工作方式:
约束条件4和6定义了从顶部到nameLabel
和nameTextView
的距离分别为CAN {(注意该术语)等于或大于20.所以如果你只设置这两个,如果Xcode实际上更大或相等,那么Xcode将会丢失,这就是为什么你需要具有低优先级约束(5和7)的原因,他们给Xcode提供了指导原则,即低优先级他们都是两者都是&# 34;开始"在20,然后程序试图满足4和6,通过检查谁更高(因为4和6允许20或更大):nameLabel
或nameTextView
。如果nameLabel
更高,则通过将其垂直距离设置为20来满足约束4,并且通过将nameTextView
到顶部的垂直距离设置为大于20(通过它们的差异自动计算)来满足约束6高度)。现在,一切都满意,自动布局将成功!
希望这有帮助。