如何使SwiftUI文本视图显示两行而不管文本长度如何?

时间:2019-09-18 14:02:16

标签: ios swiftui

我想创建一个显示两行内容的“文本”视图,如果文本过多,则剪切掉剩余的文本,或者如果文本不够长或不完整,则仅显示一两个空行甚至是一个空字符串。目前可以吗?我可以创建自己的文本视图,以某种方式行事吗?

1 个答案:

答案 0 :(得分:2)

将行限制为,只需使用两行,请使用.lineLimit(2)修饰符。

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

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

更新评论二重奏

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

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

如果您看到SwiftUI喜欢修剪多余的空间,则可以在占位符中使用隐藏的字符以使其保留。如有必要,请使用它:

(Text("‌‌‎‌‌‎ ")+Text("\n")+Text("‌‌‎ ")).lineLimit(2)

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

,您可以将文本附加在一起。