我想创建一个显示两行内容的“文本”视图,如果文本过多,则剪切掉剩余的文本,或者如果文本不够长或不完整,则仅显示一两个空行甚至是一个空字符串。目前可以吗?我可以创建自己的文本视图,以某种方式行事吗?
答案 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
包含特殊隐藏字符。
是,您可以将文本附加在一起。