Хорошо, я знаю, что SwiftUI - это изменение мышления, особенно происходящее из мира HTML и css. Но я потратил около 4 дней, пытаясь заставить что-то работать, что, на мой взгляд, должно быть довольно простым и просто не может, поэтому, пожалуйста, помогите!
У меня есть приложение, где один экран представляет собой таблицу результатов, динамически c данных, которые могут быть одной или двумя строками / столбцами, но также могут быть сотнями. Поэтому я хочу иметь возможность прокручиваться в тех случаях, когда стол огромен.
Я скопировал свои настройки и воспроизвел свои проблемы на игровой площадке 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
Вот что Я получаю, когда сетка имеет размер 3x3

Я знаю, что в SwiftUI по умолчанию центрируется, но почему .frame( alignment: .topLeading)
на HСтак, чтобы таблица была выровнена по левому верхнему углу экрана?
Тогда еще хуже, когда эта таблица станет большой, вот что я получаю:

- По-прежнему не выровнен по левому верхнему углу, что имеет смысл в качестве отправной точки.
- Когда я прокручиваю влево, я не могу даже добраться до точки, где я могу видеть столбец моего заголовка
- Вид сбрасывает меня с краев, когда я подхожу ближе. Как будто я могу добраться до точки, где я вижу верхний край таблицы, но он сразу отскакивает от меня.
- Тонна пробелов справа, что, вероятно, связано с тем, что я не вижу столбцы моего заголовка слева.
Что я здесь не так делаю? Я исчерпал все различные варианты frame
и alignment
в различных режимах просмотра здесь.