请参阅下图,了解要实现的两个示例
对齐应该在每个 UILabel 的第一行的中心 Y 上,并且无论字体大小或字体如何都应该有效。目前,我们已经通过对不同字体和字体大小组合的 super View 顶部的不同约束来实现这一点。
对齐两个 UILabel 中心的约束不起作用,因为第二个 UILabel 的文本不固定并且可以有几行。
此外,文本是动态的,因此不知道文本将在何处换行以创建第一行,因此它不能显示在一行 UILabel 中,其余文本显示在下面的另一行中。
目前这是使用 UIKit 实现的,但如果 SwiftUI 中有一个简单的解决方案,我们可以将这两个标签放在 SwiftUI 组件中。所以 SwiftUI 解决方案也将受到欢迎。
最佳答案
这是个有趣的问题!您可以尝试对左侧的标签使用 centerYAnchor
,对右侧的标签使用 firstBaselineAnchor
...这将使中心 Y 与文本基线对齐,这不是您想要的。
要找到要应用的正确偏移量,您可以使用 UIFont
中有关字符大小的信息。我可能会从 capHeight * 0.5
开始,看看它看起来或感觉是否正确。像这样的东西:
leftLabel.centerYAnchor.constraint(equalTo: rightLabel.firstBaseLineAnchor, constant: rightFont.capHeight * 0.5)
我认为这在 SwiftUI 中是一个更困难的问题,因为您无法直接使用已解析的字体指标。
关于ios - 如何在第一行文本中心的 Y 轴上对齐两个 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74653366/