SwiftUI中VStack中的ScrollView如何底部对齐

3
我无法在SwiftUI中使此scrollview底部对齐!
我在scrollview中有三个项目,但我希望它们与屏幕底部对齐(红箭头显示了我想要的位置!)

enter image description here

这是我的代码:
import SwiftUI

struct ContentView: View {
    var body: some View {
        ZStack {
            Color.blue.edgesIgnoringSafeArea(.all)
            VStack {
                ScrollView {
                    Spacer(minLength: 80)
                    Text("a")
                    Text("b")
                    Text("c")
                }.frame(maxHeight: /*@START_MENU_TOKEN@*/.infinity/*@END_MENU_TOKEN@*/)
                Text("Button")
                    .padding()
            }.frame(alignment: .bottom)
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

我正在尝试使用间隔符,并将内容旋转180度?我该怎么办?

这个回答是否解决了你的问题 https://dev59.com/k1MI5IYBdhLWcg3wCWwo#58708206? - Asperi
这真的很老(过时的API?)+ 关于滚动 - WishIHadThreeGuns
1
好的,但是垂直滚动视图没有底部 - 它会根据定义大小的内容增长,因此不清楚您希望它如何填充和行为。 - Asperi
1个回答

5

GeometryReader来拯救!首先,将ScrollView包装在GeometryReader中,这样可以获取滚动区域的高度。然后将其设置为ScrollView内容的最小高度,并使用底部对齐:

var body: some View {
    ZStack {
        Color.blue.edgesIgnoringSafeArea(.all)
        VStack {
            GeometryReader { geometry in
                ScrollView {
                    VStack {
                        Text("a")
                        Text("b")
                        Text("c")
                    }
                    .frame(maxWidth: .infinity,
                           minHeight: geometry.size.height,
                           alignment: .bottom)
                }
            }
            Text("Button")
                .padding()
        }
    }
}

这个有效,救了我一命!谢谢你!在我的情况下,我也不需要在GeometryReader之外使用VStack。 - C0D3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接