ScrollView
имеет бесконечное внутреннее пространство для своих детей. VStack
не может занять все это пространство. Так что высота VStack
определяется его содержимым (в нашем случае - Text
). Без ScrollView
это будет работать так, как вы хотите:
var body: some View {
NavigationView {
VStack(alignment: .center) {
Text(String(format: "$%.2f", 0)).font(.largeTitle)
}.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.edgesIgnoringSafeArea(.all)
.navigationBarTitle("Test")
}
}
Предоставление idealHeight
для VStack
также может быть полезным. Вы можете использовать GeometryReader
, чтобы получить «внешнюю» высоту ScrollView
:
NavigationView {
GeometryReader { geometry in
ScrollView {
VStack(alignment: .center) {
Text(String(format: "$%.2f", 0)).font(.largeTitle)
}.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, idealHeight: geometry.size.height, maxHeight: .infinity)
.edgesIgnoringSafeArea(.all)
}.navigationBarTitle("Test")
}
}