如何在 Swiftui 的主视图底部的滚动视图中放置一个非粘性按钮? Spacer 在滚动视图中似乎没有效果

Posted

技术标签:

【中文标题】如何在 Swiftui 的主视图底部的滚动视图中放置一个非粘性按钮? Spacer 在滚动视图中似乎没有效果【英文标题】:How to place a non-sticky button inside a scrollview to the bottom of a main view in Swiftui? Spacer seems to have no effect inside a scrollview 【发布时间】:2021-02-20 09:02:05 【问题描述】:

我试图在滚动视图内放置一个按钮到主视图的底部,并在间隔后添加一些底部填充。但看起来滚动视图内没有间隔的效果。我不想用 minWidth 硬编码间隔。任何建议将不胜感激?

 ScrollView 
        VStack 
            Spacer()
            NavigationLink(destination: Text("Hi")) 
                Button 
                 label: 
                    Text("Submit")
                        .frame(height: 42)
                
                .buttonStyle(FilledButton())
                .frame(width: 248, height: 42, alignment: .center)
            
            .padding(.top, 33)
            .padding(.bottom, 12)
        
    

【问题讨论】:

ScrollView 没有自己的大小,所以 在主视图底部的滚动视图内 是没有意义的。也许您的意思是 over(或更高)ScrollView。在这种情况下你为什么需要滚动视图? 当内容位于 iPhone 8 等小型设备中时,问题就出现了。所以我使用了滚动视图,但对于大型设备,我不需要滚动视图和分隔符。 【参考方案1】:

我相信您需要一个几何阅读器来获取 ScrollView 本身的高度。

struct ContentView: View 
    var body: some View 
        GeometryReader  geometry in
            ScrollView 
                VStack 
                    Spacer()
                    NavigationLink(destination: Text("Hi")) 
                        Button 
                         label: 
                            Text("Submit")
                                .frame(height: 42)
                        
                        .buttonStyle(FilledButton())
                        .frame(width: 248, height: 42, alignment: .center)
                    
                    .padding(.top, 33)
                    .padding(.bottom, 12)
                
                .frame(maxWidth: .infinity)
                .frame(height: geometry.size.height)
            
        
    

【讨论】:

以上是关于如何在 Swiftui 的主视图底部的滚动视图中放置一个非粘性按钮? Spacer 在滚动视图中似乎没有效果的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局约束在单个屏幕中放置两个视图

如何在 SwiftUI 中查找滚动视图内容是不是已到达内容的末尾

如何使 SwiftUI 滚动视图缩小到内容?

如何在最新的 iOS 14 中仅在 swiftui 中舍入滚动视图的顶角

SwiftUI:滚动视图中的顶部锚定可调整大小视图

没有部分的 SwiftUI 主列表可滚动标题视图?