如何在 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 中查找滚动视图内容是不是已到达内容的末尾