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

问题描述 投票:0回答:2

我想创建一个显示两行内容的文本视图,如果文本太多,则剪掉剩余的文本,或者如果文本不够长或者甚至是一个文本,则仅显示一两行空行空字符串。目前这可能吗?我可以创建自己的文本视图来以某种方式表现出来吗?

ios swiftui
2个回答
7
投票

要将行限制为仅需要两行,请使用 .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

包含一个
特殊隐藏字符

并且

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


0
投票
从 iOS 16 开始,您可以使用非常简单的 .lineLimit 和 ReserveSpace 参数:

Text("Some Text").lineLimit(2, reservesSpace: true)
    
© www.soinside.com 2019 - 2024. All rights reserved.