无论文本长度如何,如何让 SwiftUI 文本视图显示两行?

Eug*_*ene 2 ios swiftui

我想创建一个显示两行内容的文本视图,如果文本太多,要么截掉剩余的文本,要么在文本不够长甚至是空的情况下只显示一两行空行细绳。这是目前可能的吗?我可以创建自己的 Text 视图,以某种方式表现出这种行为吗?

Moj*_*ini 5

对于该行限制,只需要两,使用.lineLimit(2)改性剂。

为了在空白时显示空白空间,您可以使用.frame()修饰符。但是,如果您需要找到两条线标签的确切高度并应用它,请在 a 中使用占位符,ZStack如下所示:

ZStack(alignment: .top) {
    Text("\n ").hidden() // Just a place holder to hold required height to show two lines
    Text("Text").lineLimit(2)
}
Run Code Online (Sandbox Code Playgroud)

根据评论更新

请记住,还有与 SwiftUI 的其他部分相关的其他问题,例如,如果您需要在 a 中使用它StackView,则必须指定 ,layoutPriority因为默认情况下不需要它。

    NavigationView {
        VStack {
            ZStack(alignment: .top) {
                Text("\n ").lineLimit(2)
                Text("Text").lineLimit(2)
            }.layoutPriority(1000)
            NavigationLink(destination: Text("Destination")) {
                Text("Next")
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果你看到 SwiftUI 喜欢修剪多余的空格,你可以在占位符中使用隐藏字符来保留它。如果需要,请使用它:

(Text("?????? ")+Text("\n")+Text("??? ")).lineLimit(2)
Run Code Online (Sandbox Code Playgroud)

请注意,第一个和最后一个Text包含一个特殊的隐藏字符

而且,你可以追加文本一起。