40

只是弄清楚如何在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))

        }
    }
}

编辑

.lineLimit(X),成功了。但是,例如,是否可以不设置特定金额。只有一个0?

4

5 回答 5

116

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

Text(message)
    .fixedSize(horizontal: false, vertical: true)

该文档指出:

这个例子展示了 fixedSize(horizo​​ntal:vertical:) 对比其父视图更宽的文本视图的效果,保留了文本视图的理想、未截断宽度。

https://developer.apple.com/documentation/swiftui/view/fixedsize(horizo​​ntal:vertical:)

于 2019-10-11T06:56:21.687 回答
26

用于.lineLimit()限制文本行数。它接受一个可选的 Int ( Int?) 作为参数,并.lineLimit(nil)允许无限行。

编辑:从 SwiftUI Beta 5Text开始,默认行数限制为nil,因此Text默认情况下将换行。

于 2019-06-06T18:28:25.267 回答
22

用这个:

Text("Ingredients: Avocado, Almond Butter, Bread")
    .lineLimit(nil)

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

Text("Ingredients: Avocado, Almond Butter, Bread")
    .fixedSize(horizontal: false, vertical: true)
于 2020-01-26T03:35:04.723 回答
1

即使没有应用行限制,我的文本也会不断截断。将我的内容包装在一个已ScrollView {}解决的问题中。

在此处查看更多信息:https ://www.hackingwithswift.com/quick-start/swiftui/how-to-add-horizo​​ntal-and-vertical-scrolling-using-scrollview

于 2020-01-05T23:14:29.093 回答
0

如果 lineLimit(nil) 不适合您,请尝试手动将 layoutPriority 设置为适合您的任何内容.layoutPriority(0.5)

于 2020-01-08T14:43:57.077 回答