为什么 LazyHStack 在 SwiftUI 中采用全高,而 HStack 不采用全高?

alp*_*nec 3 swiftui vstack hstack

为什么 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)
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

而使用 HStack 时:

import SwiftUI

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

在此输入图像描述

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

PS:Xcode版本12.5测试版(12E5220o)

use*_*ser 8

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