SwiftUI ScrollView 和对齐

Lam*_*zle 6 platform-specific scrollview swiftui

好的,我知道 SwiftUI 是一种思维转变,尤其是来自 HTML 和 css 的世界。但是我已经花了大约 4 天的时间试图让我觉得应该很容易的东西可以工作,只是不能,所以请帮忙!

我有一个应用程序,其中一个屏幕是一个结果表,动态数据可能是一两行/列,但也可能是数百。所以我希望能够在表格很大的情况下滚动。

我已经复制了我的设置并在像这样的 Swift 游乐场中重现了我的问题

import Foundation
import UIKit
import PlaygroundSupport
import SwiftUI

struct ContentView : View {
    var cellSize: CGFloat = 50
    var numRows: Int = 3
    var numCols: Int = 3
    var body : some View {

        ZStack {
            ScrollView([.horizontal,.vertical]) {

                    HStack( spacing: 0) {
                        VStack ( spacing: 0) {
                            ForEach(0 ..< numRows, id: \.self) { row in
                                Text("row " + row.description)
                                    .frame( height: self.cellSize )
                            }
                        }
                        ForEach(0 ..< self.numCols, id: \.self) { col in
                            VStack( spacing: 0) {
                                ForEach(0 ..< self.numRows, id: \.self) { row in
                                    Rectangle()
                                    .stroke(Color.blue)
                                        .frame( width: self.cellSize, height: self.cellSize )
                                }
                            }
                        }
                    }
                  .frame( alignment: .topLeading)
            }
        }
    }
}

let viewController = UIHostingController(rootView: ContentView())
PlaygroundPage.current.liveView = viewController
Run Code Online (Sandbox Code Playgroud)

这是我在网格为 3x3 时得到的结果

3x3

我知道在 SwiftUI 中默认居中之类的事情,但为什么在 HStack.frame( alignment: .topLeading)上不会导致表格与屏幕的左上角对齐?

更糟糕的是,一旦该表变大,这就是我得到的:

15x15

  1. 仍然没有与左上角对齐,这作为起点是有意义的。
  2. 当我向左滚动时,我什至无法看到我的标题栏
  3. 当我靠近时,视图将我从边缘弹开。就像我可以看到桌子的顶部边缘一样,但它立即将我弹回来。
  4. 右侧有大量空白,这可能与我没有看到左侧的标题栏有关。

我在这里做错了什么?在这里尝试各种视图的所有不同framealignment选项,我已经筋疲力尽了。