了解"firstBaseLine"与"baseLine"AutoLayout约束

zer*_*ing 16 ios autolayout nslayoutconstraint swift

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

截图1

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

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

截图2

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

截图3

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

小智 33

来自Apple Docs:

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

这也是对齐三行标签时的差异截图.上部绿色标签正在使用NSLayoutAttributeFirstBaseline,下部绿色标签正在使用NSLayoutAttributeBaseline.这是对两个绿色标签的唯一限制,除了它们都是粉红色标签的水平固定40

DebuggingBaselineConstraints


Bas*_*Zen 11

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

firstBaseLine指多线对象的顶部基线: 故事板警告:iOS 8.0之前的第一个基线布局属性

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

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

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