SwiftUI滚动视图和对齐

SwiftUI滚动视图和对齐,swiftui,scrollview,platform-specific,Swiftui,Scrollview,Platform Specific,好吧,我知道SwiftUI是一种思维的转变,尤其是来自HTML和css的世界。但我已经花了4天的时间试图找到一些工作,我觉得应该很容易,只是不能,所以请帮助 我有一个应用程序,其中一个屏幕是一个结果表,动态数据可以是一行或两行/列,也可以是数百行/列。所以我希望能够在桌子很大的情况下滚动 我复制了我的设置,并在这样一个快速的操场上重现了我的问题 import Foundation import UIKit import PlaygroundSupport import SwiftUI stru

好吧,我知道SwiftUI是一种思维的转变,尤其是来自HTML和css的世界。但我已经花了4天的时间试图找到一些工作,我觉得应该很容易,只是不能,所以请帮助

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

我复制了我的设置,并在这样一个快速的操场上重现了我的问题

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
<代码>导入基础 导入UIKit 导入PlaygroundSupport 导入快捷键 结构ContentView:View{ 变量单元格大小:CGFloat=50 变量numRows:Int=3 变量numCols:Int=3 var body:一些观点{ ZStack{ 滚动视图([.水平,.垂直]){ HStack(间距:0){ VStack(间距:0){ ForEach(0.. 这是当网格为3x3时得到的结果

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

更糟糕的是,一旦那张桌子变大,我得到的是:

  • 仍然没有与左上角对齐,这可以作为起点
  • 当我向左滚动时,我甚至无法看到标题栏
  • 当我靠近时,视图会将我从边缘反弹开。就像我可以看到桌子的上边缘,但它会马上把我弹回来
  • 右边有大量空白,这可能与我看不到左边的标题列有关

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

    下面的主题可能会有所帮助。我也有这个问题。这似乎发生在滚动视图中的StackView中。这一定是SwiftUI中的bug,所以不幸的是我们不能做太多。。。你可以尝试上面的解决方案,但这并不理想。我担心我们将不得不等待修复…看到了吗