SwiftUI 的自定义堆栈导航
SwiftUI 的自定义堆栈导航
这个库为 SwiftUI 提供了一个自定义容器视图,它提供了标准 NavigationStack 的替代方案。它旨在通过远离 UINavigationController 和 UINavigationBar 的行为来提高屏幕导航期间转换的可定制性。
特征
- 屏幕导航期间可自定义的过渡
- 类似于 iOS 主屏幕应用程序图标和应用程序屏幕的上下文动画
- NavigationView 和 NavigationStack 的熟悉 API,易于使用
- 路径支持恢复以前导航的视图
入门
要使用此库,您需要使用三个主要符号:Stack、StackLink 和 StackUnwindLink。
用法示例
- 在 SwiftUI 视图文件中导入 SwiftUIStack 模块:
import SwiftUIStack
- 在视图层次结构中使用 Stack 容器:
var body: some View {
Stack {
// Your views here...
}
}
- 使用 StackLink 创建具有所需转换和目的地的导航链接:
StackLink(transition: .slide, value: someValue) {
Text("Navigate to detail view")
}
您还可以使用唯一标识符和命名空间在转换参数中设置匹配的转换:
StackLink(transition: .matched(identifier: user.id, in: local), value: someValue) {
Text("Navigate to detail view with matched transition")
}
- 或者,使用 StackUnwindLink 创建一个返回到前一个视图的导航链接:
StackUnwindLink {
Text("Back to previous view")
}
放松语境
在堆叠视图中,您可以将 unwindContext 作为 EnvironmentValue 进行访问。您可以将 unwindContext 传递给 StackUnwindLink。这允许您明确指定触发展开的堆栈。
@Environment(\.stackUnwindContext) var unwindContext
StackUnwindLink(target: .specific(unwindContext)) {
Text("Back to Menu")
}
StackUnwindLink 模式
StackUnwindLink 现在支持不同的导航模式。要导航回目标堆栈的根,请使用 .all 模式。
StackUnwindLink(mode: .all) {
Text("Back to Root")
}
嵌套堆栈
当您需要跨层次结构的多个级别发送消息时,此技术对于嵌套堆栈很有用。通过将 unwindContext 与 StackUnwindLink 结合使用,您可以有效地在嵌套堆栈之间进行通信,并在视图层次结构的不同级别之间导航。
安装
(包括通过 Swift Package Manager、CocoaPods 或其他方法安装的说明,如果适用)
贡献
(包括对项目做出贡献的说明,例如打开问题、提交拉取请求和任何其他相关信息)
执照
这个项目是根据 Apache 许可证 2.0 版获得许可的。有关详细信息,请参阅许可证文件。