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

Posted

技术标签:

【中文标题】当文本()对于设备的宽度而言太长时,如何在 SwiftUI 中进行换行?【英文标题】:How do I make Text() wrap in SwiftUI when it is too long for the width of the device? 【发布时间】:2019-06-06 02:55:59 【问题描述】:

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

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

【问题讨论】:

***.com/a/58335789/359532 【参考方案1】:

事实证明,您可以将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)

【讨论】:

我在NavigationButton 实例中使用Text 实例。我没有看到Text 实例在此类容器内使用时从 β2 开始包装。您是否也看到过这种行为? 我还没用过那个设置@NickKohrn【参考方案2】:

我刚刚在最新的 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()

【讨论】:

以上是关于当文本()对于设备的宽度而言太长时,如何在 SwiftUI 中进行换行?的主要内容,如果未能解决你的问题,请参考以下文章

当内容太长时,具有 .estimated 宽度的组合布局项目会使应用程序崩溃

当高度随着太多文本而增长时,网格列内部输入推动上 div

当文本太长时,StatusStrip 标签不可见

不...当 UIButton (Swift) 中的文本太长时

组布局中的 JLabel - 冻结大小

当 Matcher.find() 运行时间过长时,如何终止它?