在 SwiftUI 中获取文本的宽度

Posted

技术标签:

【中文标题】在 SwiftUI 中获取文本的宽度【英文标题】:Get width of Text in SwiftUI 【发布时间】:2019-06-10 20:57:06 【问题描述】:

如何获取Text 组件的width

我想让我的Button 位于Text 下,与Text 本身的宽度相同。

VStack(alignment: .center, spacing: 20) 
      Text("Finde heraus, was gerade in der Welt los ist.")
           .font(.largeTitle).bold().lineLimit(3).multilineTextAlignment(.leading)

      Button(action: 

      , label: 
           Text("Account erstellen").bold()
               .frame(minWidth: 0, maxWidth: .infinity)
               .frame(height: 40).padding(.top, 0)
               .background(Color.blue)
               .foregroundColor(.white)
               .cornerRadius(20)
      )
.padding([.leading, .trailing], 25)

这给了我这个结果,在我看来它很丑:

在 iPad 上,文本和按钮之间的宽度更大

我该如何解决这个问题。

提前致谢。

【问题讨论】:

【参考方案1】:

bold() 属性中似乎存在错误。删除它会导致文本按照您的预期对齐。您可以尝试提交一个错误,或者等待它,看看它是否在测试期间得到修复。

        Text("Finde heraus, was gerade in der Welt los ist.")
            .font(.largeTitle)
            .lineLimit(3)
            .multilineTextAlignment(.leading)

【讨论】:

以上是关于在 SwiftUI 中获取文本的宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SwiftUI 获取文本宽度?

SwiftUI - 适合多行文本宽度的内联样式文本背景颜色 SwiftUI

SwiftUI:如何计算文本视图的宽度?

当文本()对于设备的宽度而言太长时,如何在 SwiftUI 中进行换行?

文本字段背景图像 Aspect fit 限制了 swiftUI 中 iPad 的宽度

如何在 SwiftUI 中嵌入 ForEach 的 HStack 中设置相对宽度?