0

我通过使用 GeometryReader 使我的滚动视图居中,如下所示:

struct ContentView: View {
    var body: some View {
        NavigationView {
            GeometryReader { geom in
                ScrollView(.vertical, showsIndicators: false) {
                    ZStack { 
                        my_super_view()
                    }
                    .navigationBarTitle("Main")
                    .frame(width: geom.size.width)
                    .frame(minHeight: geom.size.height)
                }
            }
        }.navigationViewStyle(StackNavigationViewStyle())
    }
}

在此处输入图像描述

它的效果几乎很好。我的问题是容器 ZStack 的高度太大,页面可以像这样向下滚动: 在此处输入图像描述 当我尝试做类似的事情时:

.frame(minHeight: geom.size.height-52)

页面停止滚动,但居中不佳。如何正确居中页面,使其完全适合主屏幕而不在其下方滚动?

UPD:我发现我可以使用 position() 而不是 frame()。在这种情况下,页面正确居中,但将来可能会导致一些问题。

4

1 回答 1

0
struct ContentView: View {
    var body: some View {
        NavigationView {
            GeometryReader { geom in
                ScrollView(.vertical, showsIndicators: false) {
                    ZStack { 
                        my_super_view()
                    }
                    .navigationBarTitle("Main")
                    .position(x: geom.size.width/2, y: geom.size.height/2)
                }
            }
            .navigationBarTitle("Диа Компаньон")
            .navigationBarTitleDisplayMode(.inline)
        }.navigationViewStyle(StackNavigationViewStyle())
    }
}

我不得不使用.inlineNavigationBarDisplayMode 而position不是设置 ZStack 的宽度和高度

于 2021-11-06T20:19:14.217 回答