与其他内容一起放入 HStack 时,文本只有一行(SwiftUI 列表)
Posted
技术标签:
【中文标题】与其他内容一起放入 HStack 时,文本只有一行(SwiftUI 列表)【英文标题】:Text has only one line when put in HStack with something else (SwiftUI List) 【发布时间】:2019-09-08 01:23:51 【问题描述】:我正在尝试显示项目列表。每行都应在左侧包含一个特定颜色的条纹和一个标题。此标题有时超过一行,但仅显示为一行和“...”。当我删除条纹时,它显示为多行文本。我已附上代码和两张图片以供比较
这是我的代码:
HStack
Rectangle()
.foregroundColor(poll.outcome ? .green : .red)
.frame(width: 3)
VStack
Text(poll.poll.title!).font(.headline)
.lineLimit(2)
这是没有 Rectangle 的样子:
还有矩形:
【问题讨论】:
您使用的是什么版本的 Xcode?我没有看到问题 【参考方案1】:在 List 或 ScrollView 中,SwiftUI 引擎将压缩回文本区域。 .lineLimit(x) 给你最大的线,而不是最小的;) 为了确保引擎不会缩回文本高度并达到最大限制,请添加 .fixedSize(horizontal: false, vertical: true) 如下所示
HStack
Rectangle()
.foregroundColor(.red)
.frame(width: 3)
VStack
Text("line1\nline2\nline3").font(.headline)
.lineLimit(2)
.multilineTextAlignment(.leading)
.fixedSize(horizontal: false, vertical: true)
【讨论】:
【参考方案2】:SwiftUI 现在有一些错误,它就是其中之一,您可以查看 some discussion on this answer。
虽然它可以在我的机器上运行,但如果您在调整元素大小时遇到任何问题,您可以使用Spacer
s 作为解决方法,直到 Apple 修复所有 SwiftUI 错误。
对于这种情况,您可以像这样在两个分隔符之间换行:
VStack
Spacer()
Text("FirstLine\nSecondLine\nThirdLine")
.font(.headline)
.lineLimit(2)
Spacer()
【讨论】:
恐怕这对我来说会产生相同的结果。我已经用.layoutPriority()
试过了,结果也一样以上是关于与其他内容一起放入 HStack 时,文本只有一行(SwiftUI 列表)的主要内容,如果未能解决你的问题,请参考以下文章