ios - 如何在第一行文本中心的 Y 轴上对齐两个 UILabel

标签 ios xcode swiftui uikit swiftui-alignment-guide

请参阅下图,了解要实现的两个示例

UILabels to be aligned

对齐应该在每个 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/

相关文章:

swiftui选择器如何隐藏上下箭头(ios16)

swift - 将 SwiftUI View 转换为 NSImage

ios - 如何仅将 swift 函数公开给 objc

ios - 为什么 cell.ImageView?.image 如果传递了图像则为 nil?与 Swift 中的可选项混淆

iphone - 绑定(bind)端口<1024的UDP套接字?

objective-c - 通过代码加载 View Controller

ios - Nativescript-Vue -- 本地镜像路径不起作用

swift - 如何在每次内容 View 加载时生成一个新的随机数?

xcode - 使用 OpenGL 在 mac osx cocoa 应用程序中设置连续渲染

SwiftUI 线程 1 : Fatal error: No ObservableObject of type SessionStore found