了解“firstBaseLine”与“baseLine”AutoLayout约束

时间:2016-03-23 20:54:12

标签: ios swift autolayout nslayoutconstraint

我创建了以下视图,如下所示:

screenshot 1

并使用添加缺失约束 t自动添加约束。 我在iOS世界中相当新,我正在尝试配置约束如何工作。

在文档大纲中,我可以看到增加的约束:

screenshot 2

我点击标签 UR ,尺寸检查员告诉我以下内容:

screenshot 3

第一个基线与UL对齐的约束与基线与UL对齐的约束之间有什么区别?当我在约束按钮上单击尺寸检查器时,它会向我显示相同的行。

2 个答案:

答案 0 :(得分:25)

来自Apple Docs:

NSLayoutAttributeBaseline
对象的基线。
适用于iOS 6.0及更高版本。
NSLayoutAttributeFirstBaseline
对象的基线。对于具有多行文本的对象,这是最顶行文本的基线 适用于iOS 8.0及更高版本。

这也是对齐三行标签时的差异截图。上面的绿色标签使用n = 5; M = eye(n); M(2:n+1:end) = 1; ,下面的绿色标签使用NSLayoutAttributeFirstBaseline。这些是对两个绿色标签的唯一限制,除了它们都是从粉红色标签水平固定40个

DebuggingBaselineConstraints

答案 1 :(得分:10)

我不建议使用“添加缺失约束”。这是一个非常难以预测的向导DWIW(做它想要的)。了解每个约束并手动添加。在场景层次结构中的对象之间按住Ctrl键拖动;使用约束检查器并编辑数值;使用三角形弹出窗口中的“更新框架”;从检查员中删除约束;重复,直到你得到它。

firstBaseLine指的是多行对象的顶部基线: Storyboard warning : First baseline layout attribute before iOS 8.0

如果涉及的标签或文本字段只有一行,则它是无用的约束。

如果您希望两个并排的单行文本垂直对齐,即使它们的字体大小,上升和基线下降可能不同,请使用baseLine对齐。它看起来很自然,就像字符串在同一条线上一样。

底部,顶部和中心垂直对齐也是可能的,更适合非文本对象。