0

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

在此处输入图像描述

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

PS:Xcode 版本 12.5 beta (12E5220o)

4

1 回答 1

3

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

于 2021-02-07T21:35:01.027 回答