ios - 无论文本长度如何,如何使 SwiftUI TextView 显示两行?

标签 ios swiftui

我想创建一个显示两行内容的 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/

相关文章:

ios - 如何在 MKMapView 中添加不同的图像而不是图钉?

swift - 从 SwiftUI 的 List 中删除列表元素

ios - 调用函数返回错误: extra argument in call

ios - 将 iOS 应用程序上传到网站,而无需将其提交到 App Store

ios - Obj-c,我可以使用协议(protocol)作为函数参数的一种参数类型吗?

swift - 在返回某些 View 的闭包内声明临时变量或常量 (SwiftUI)

swift - NavigationView 内带有图像的按钮缩放不正确

ios - 组合:监听内部集合变化

ios - 使用 ForEach 时 SegmentedControl 中断

iOS NSMutablearray 释放行为