中心滚动查看内容

Posted

技术标签:

【中文标题】中心滚动查看内容【英文标题】:Center Scroll View content 【发布时间】:2021-10-24 14:36:06 【问题描述】:

我使用 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)

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

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

【问题讨论】:

如果内容小于屏幕并且您需要将内容居中,滚动视图的原因是什么,滚动视图在这种情况下不合适。 【参考方案1】:
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())
    

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

【讨论】:

以上是关于中心滚动查看内容的主要内容,如果未能解决你的问题,请参考以下文章

iOS应用程序中的滚动视图内容中心对齐[关闭]

如何使 UITableView 内容围绕中心点滚动

如何确定滚动视图中当前可见的区域并确定中心?

滚动条中的中心缩略图(jQuery)

在 UIScrollView 的滚动上更改 UIImageView 中心点

使用自动布局时 UIScrollview 的中心内容