[英]How do I add a vertical swipe up gesture(to go to a different view) in a scrollview in SwiftUI
[英]SwiftUI: How to implement swipe up view from "find my" app
从 iOS 16 开始,您可以使用presentationDetents(_:)
修饰符来实现这些。
有关示例,请参阅本文。
是的,展示一张纸并不完全相同,并且没有内置的 SwiftUI 视图可以做到这一点。
以下是正确方向的一些指示:
1
尝试使用 ZStack 作为基本结构:
ZStack(alignment: .bottom) {
mapView
sheetView
}
工作表漂浮在 map 上方并与底部对齐(您可以根据需要使用.frame(height:)
设置其高度)。 mapView 应该是全高,因为工作表背景是半透明的
2
工作表背景可能如下所示:
// Sheet background:
RoundedRectangle(cornerRadius: 18, style: .continuous)
.fill(.regularMaterial)
.edgesIgnoringSafeArea(.bottom)
.overlay {
// Handle
Capsule()
.fill(.ultraThinMaterial)
.colorScheme(.dark)
.frame(width: 60, height: 8)
.padding()
}
3
您可以使用拖动手势开始处理实施制动器:
@State var sheetHeight = 300.0
// in body:
sheetView
.frame(height: sheetHeight)
.gesture(DragGesture(minimumDistance: 1)
.onChanged{ v in
sheetHeight = 300 - v.translation.height
}
.onEnded{ _ in
sheetHeight = 300
}
)
从那里开始,地图有很多行为:自定义定位、内容在顶部定位转换为可滚动、图标显示和隐藏、map 平移时切换定位等。
做这些事情并没有内置的魔法——它只是自定义 UI 工作。 没有理由你不能在 SwiftUI (或 UIKit 如果你愿意)中实现它。 玩得开心!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.