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

How do I make Text() wrap in SwiftUI when it is too long for the width of the device?

我有以下内容,希望将较长的文本换行

Text("Long label that needs to be able to wrap but isn't doing it yet.")
    .font(.largeTitle)
    .multilineTextAlignment(.center)
    .lineLimit(0)

事实证明,您可以将 nil 传递给 .lineLimit,这将使 Text() 按需要换行。

Text("Long label that needs to be able to wrap but isn't doing it yet.")
    .font(.largeTitle)
    .multilineTextAlignment(.center)
    .lineLimit(nil)

我刚刚在最新的 XCode 11 beta、beta 7 上对此进行了测试。我需要指定一个非零行限制并使用 padding 修饰符来实现多行文本

Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.")
   .font(.subheadline)
   .multilineTextAlignment(.center)
   .lineLimit(3)
   .padding()

.fixedSize.lineLimit(nil) 都应该有效。

 Text("Label text")
        .multilineTextAlignment(.leading)
        .fixedSize(horizontal: false, vertical: true)

 Text("Label text")
        .multilineTextAlignment(.leading)
        .lineLimit(nil)

.fixedSize 是 Apple 的 preferred/suggested 选项,用于将文本换行到下一行