在文本中添加无限行(SwiftUI)

Jac*_*erg 4 ios swift swiftui

只是弄清楚如何在一个文本中实现多行文本Text。似乎的Text默认值与UILabel(一行)相同,但是我找不到符合此条件的任何函数。

struct ContentView : View {
    var body: some View {
        VStack(alignment: .leading, spacing: 10) {
            HStack {
                Text("Avocado Toast").font(.system(size: 24))
            }
            // This Text does cut, and I wonder how I can achieve multiple rows
            Text("Ingredients: Avocado, Almond Butter, Bread")
                .font(.system(size: 20))

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑

.lineLimit(X),做到了。但是,例如,可以不设置特定的数量。只有0?

Dar*_*ary 19

用这个:

Text("Ingredients: Avocado, Almond Butter, Bread")
    .lineLimit(nil)
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请使用以下方法:

Text("Ingredients: Avocado, Almond Butter, Bread")
    .fixedSize(horizontal: false, vertical: true)
Run Code Online (Sandbox Code Playgroud)

  • .fixedSize(horizo​​ntal: false, Vertical: true) 正是我一直在寻找的修复方法,谢谢! (2认同)
  • 并不是要声明,但这个答案已经在您发帖前 3 个月发布了。 (2认同)

RPa*_*l99 11

使用.lineLimit()限制文本行的数量。它以可选的Int(Int?)作为参数,并.lineLimit(nil)允许无限制的行。

编辑:自SwiftUI Beta 5起,Text默认行限制为nil,因此默认情况下,文本Text将自动换行。

  • `lineLimit` 不起作用,请按照 Michael 的建议使用 `fixedSize` (2认同)

Mic*_*sky 7

对于将文本包装在表单.lineLimit(Int.max)中对我不起作用。似乎需要一定的宽度才能知道何时包装。我相信官方方式是.fixedSize

Text(message)
    .fixedSize(horizontal: false, vertical: true)
Run Code Online (Sandbox Code Playgroud)

该文档指出:

本示例显示了fixedSize(horizo​​ntal:vertical :)在比其父级更宽的文本视图上的效果,并保留了文本视图的理想的,截断的宽度。

  • 这应该是答案,“.lineLimit”目前无法正常工作。 (5认同)
  • 同样的事情发生在我身上。`horizo​​ntal: true,vertical: false` 如果您希望文本垂直扩展,请使用 `horizo​​ntal: false,vertical: true` 水平扩展。 (2认同)

Fra*_*ool 7

我必须添加 2 个不同的修饰符才能使其正常工作:

Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam pharetra neque ex, at consectetur leo semper eu. Ut finibus maximus ex et maximus. Proin vel sagittis sapien, sed tincidunt orci.")
    .frame(maxWidth: .infinity, alignment: .leading)
    .fixedSize(horizontal: false, vertical: true)
Run Code Online (Sandbox Code Playgroud)

如果您不添加frame,它将使您的文本超出屏幕范围,并fixedSize允许多行可见


小智 5

Text("Professional Burnout and how to overcome it")
     .font(.callout)
     .fixedSize(horizontal: false, vertical: true)
     .frame(width: 220)
Run Code Online (Sandbox Code Playgroud)

文本换行到下一行