我正在尝试在Text
内创建一个简单的VStack
堆栈,无论我做什么,即使我显式设置了{{1},文本也会被截断而不是自动换行}(尽管我现在知道这是默认值)。
我已经尝试在VStack的第一个元素上设置lineLimit(nil)
,并且还尝试了其他一些帖子所建议的设置layoutPriority(1)
,但是似乎没有任何解决方法。
以下是该问题的视频:
以下是一些重现此问题的代码:
frame(idealHeight: .greatestFiniteMagnitude)
这可能只是Xcode中的错误吗?我正在运行Beta 7
答案 0 :(得分:4)
我想出了如何使文本正确呈现的方法。
在此处应用答案有效:Views compressed by other views in SwiftUI VStack and List
关键是要确保在.fixedSize()
之前添加.frame()
不需要Spacer()
!
答案 1 :(得分:2)
不幸的是,这是一个错误。
有一种解决方法,您可以用它来迫使它重新计算元素,但这只是一种解决方法,您必须等待发布,看看它是否已解决。
不幸的是,这是一个错误。
有一种解决方法,您可以用它来迫使它重新计算元素,但这只是一种解决方法,您必须等待发布,看看它是否已解决。
解决方法
在ForEach
内容的上方和下方添加一对高度为零的分隔符。
struct BugRepro: View {
@State var length: Double = 1.0
var body: some View {
VStack {
ForEach(0..<3) { i in
Spacer().frame(height: 0)
BugReproElement(index: i)
Spacer().frame(height: 0)
}.frame(width: UIScreen.main.bounds.width * CGFloat(length))
Slider(value: self.$length, in: 0.0...1.0)
}
}
}
答案 2 :(得分:2)
我必须先添加.fixedSize(horizontal: false, vertical: true)
AND .padding()
,然后我的所有文本都将被截断(正确显示),我也有一个单独的vstack的框架标签视图中有2个独立的vstack)
答案 3 :(得分:0)
Text("Some Text")
.lineLimit(1)
.fixedSize()
将始终显示在完全显示的 1 行中。