我想创建一个显示两行内容的文本视图,如果文本太多,则剪掉剩余的文本,或者如果文本不够长或者甚至是一个文本,则仅显示一两行空行空字符串。目前这可能吗?我可以创建自己的文本视图来以某种方式表现出来吗?
要将行限制为仅需要两行,请使用 .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
,因为默认情况下不需要它。
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
包含一个特殊隐藏字符。 并且
是的,您可以将文本附加在一起。
Text("Some Text").lineLimit(2, reservesSpace: true)