我想像野生动物园一样按滚动方向显示或隐藏项目。向上滚动时隐藏一些内容,向下滚动时显示它。
答案 0 :(得分:6)
您可以使用DragGesture值
ScrollView {
...
}
.gesture(
DragGesture().onChanged { value in
if value.translation.height > 0 {
print("Scroll down")
} else {
print("Scroll up")
}
}
)
答案 1 :(得分:4)
我认为,simultaneousGesture 是更好的解决方案,因为它不会阻止 scrollView 事件。
ScrollView {
}
.simultaneousGesture(
DragGesture().onChanged({
let isScrollDown = 0 < $0.translation.height
print(isScrollDown)
}))
答案 2 :(得分:1)
您将使用GeometryReader获取ScrollView视图中一个视图的全局位置,以检测滚动方向。下面的代码将打印出当前的midY位置。根据+/-值,您可以显示或隐藏其他视图。
struct ContentView: View {
var body: some View {
ScrollView{
GeometryReader { geometry in
Text("Top View \(geometry.frame(in: .global).midY)")
.frame(width: geometry.size.width, height: 50)
.background(Color.orange)
}
}.frame(minWidth: 0, idealWidth: 0, maxWidth: .infinity, minHeight: 0, idealHeight: 0, maxHeight: .infinity, alignment: .center)
}
}