我想创建一个显示两行内容的 TextView ,如果文本太多,则截断剩余的文本,或者如果文本不够长甚至是空的,则只显示一两行空行字符串。这目前可能吗?我可以创建自己的 Text View 以某种方式表现吗?
最佳答案
对于 限制行 只需要两个,使用 .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
包含 特殊隐藏字符 .和是的 ,您可以将文本附加在一起。
关于ios - 无论文本长度如何,如何使 SwiftUI TextView 显示两行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57994597/