如何在水平 UIStackView 中对齐两个标签的底部?

Posted

技术标签:

【中文标题】如何在水平 UIStackView 中对齐两个标签的底部?【英文标题】:How do I align the bottoms of two labels in a horizontal UIStackView? 【发布时间】:2018-01-03 05:04:23 【问题描述】:

我有两个水平标签UIStackView。标签 1 是大字体(闹钟时间),标签 2 是小字体(上午/下午指示器),我想对齐每个标签的底部。

我将堆栈视图的对齐方式设置为底部,但它似乎只是对齐标签总区域的底部而不是实际文本。结果是较小字体的底部边缘比大标签的底部边缘高出大约 3 或 4 个像素。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

您需要检查 VERTICAL 堆栈中的 BaseLine Relative 属性 查看

对于水平 stackview

您需要将对齐方式从填充模式更改为First baselineLast baseline

如果你想了解基线这里是一个很好的解释https://***.com/a/24541992/4601900

希望对你有帮助

【讨论】:

“基线相对”是否与水平堆栈视图有关?根据 Apple 文档,这是“一个布尔值,用于确定视图之间的垂直间距是否从它们的基线测量。”和“它仅在垂直堆栈视图中使用”。如果错了请纠正我?苹果文档链接:developer.apple.com/documentation/uikit/uistackview/…【参考方案2】:

UIStackView

bottom alignment:对齐组件的底部,即UILabelUITextField等的框。

baseline aligmnent:要对齐文本的底部,您需要使用基线。

要更清楚地了解底部和基线,请参阅:https://***.com/a/24541992/5716829

UIStackView 提供了 2 个选项来对齐基线,

    第一个基线 最后一个基线

您可以在这里找到对这两个选项的一个很好的解释:https://***.com/a/33934323/5716829

现在,由于您的 UILabels 仅包含单行文本,因此第一个和最后一个基线的工作方式相同。

如果您有多行标签,并且想要对齐其文本的底部,请使用 Last Baseline

这是视图层次结构的截图:

【讨论】:

【参考方案3】:

将 stackView 的对齐方式更改为“Last BaseLine”,以实现相同的效果。

【讨论】:

我们可以在没有“基线相对”选项的情况下实现相同的目标。 “基线相对”仅适用于垂直堆栈视图。苹果文档:“developer.apple.com/documentation/uikit/uistackview/…” 是的,我们可以在不使用“基线相对”选项的情况下获得所需的输出。

以上是关于如何在水平 UIStackView 中对齐两个标签的底部?的主要内容,如果未能解决你的问题,请参考以下文章

UIStackView 对齐问题

UIStackView 表单布局

UIStackView 嵌入在 UIStackView 对齐中

带有 UIScrollview 的 UIStackView 中的多行标签

当其他元素太宽时,在水平 UIStackview 中看不到标签

自动布局将两个标签彼此相邻对齐