问题描述
为什么 LazyHStack 与 HStack 在高度方面的行为不同? (对于 vstack 也是如此)。
import SwiftUI
struct LazyTestView: View {
var body: some View {
LazyHStack {
ForEach(1...10,id: \.self) { int in
Text("\(int)")
}
}
}
}
struct LazyTestView_Previews: PreviewProvider {
static var previews: some View {
LazyTestView()
.previewLayout(.sizeThatFits)
}
}
而使用 HStack:
import SwiftUI
struct LazyTestView: View {
var body: some View {
HStack {
ForEach(1...10,id: \.self) { int in
Text("\(int)")
}
}
}
}
一种解决方案是为 LazyHStack 添加 .fixedSized()
...
PS:Xcode 12.5 测试版 (12E5220o)
解决方法
从一开始就是这样。从 LazyVStack 开始,原因是因为 Lazy Stacks 不知道它们携带的所有可能的内容,因为它需要更安全的方法来为任何大小的内容做好准备,另一方面,普通的 Stacks 确实知道它们的孩子是什么因此,他们采用了他们真正需要的框架或尺寸,不多不少!