Модификатор frame(alignment: .center)
, который вы добавили, не работает, поскольку он оборачивает ваше представление в новое представление точно такого же размера. Из-за этого выравнивание ничего не делает, так как нет никакого дополнительного места для представления, которое нужно переместить.
Одним из возможных решений вашей проблемы было бы завершение целого ScrollView
в GeometryReader
для прочитайте доступную высоту. Затем используйте эту высоту, чтобы указать, что дети не должны быть меньше ее. Это сделает ваш взгляд центрированным внутри ScrollView
.
struct ContentView: View {
@State private var count : Int = 100
var body : some View {
GeometryReader { geometry in
ScrollView {
VStack {
Button(action: {
if self.count > 99 {
self.count = 5
} else {
self.count = 100
}
}) {
Text("CLICK")
}
ForEach(0...self.count, id: \.self) { no in
Text("entry: \(no)")
}
}
.padding(8)
.border(Color.red)
.frame(minHeight: geometry.size.height) // Here we are setting minimum height for the content
}
.border(Color.blue)
}
}
}