为什么 LazyHStack 占据全高而 HStack 在 SwiftUI 中没有?

问题描述

为什么 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)
    }
}

enter image description here

而使用 HStack:

import SwiftUI

struct LazyTestView: View {
   var body: some View {
      HStack {
         ForEach(1...10,id: \.self) { int in
            Text("\(int)")
         }
      }
   }
}

enter image description here

一种解决方案是为 LazyHStack 添加 .fixedSized()...

PS:Xcode 12.5 测试版 (12E5220o)

解决方法

从一开始就是这样。从 LazyVStack 开始,原因是因为 Lazy Stacks 不知道它们携带的所有可能的内容,因为它需要更安全的方法来为任何大小的内容做好准备,另一方面,普通的 Stacks 确实知道它们的孩子是什么因此,他们采用了他们真正需要的框架或尺寸,不多不少!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...