SwiftUI 的自定义堆栈导航

堆

SwiftUI 的自定义堆栈导航

这个库为 SwiftUI 提供了一个自定义容器视图,它提供了标准 NavigationStack 的替代方案。它旨在通过远离 UINavigationController 和 UINavigationBar 的行为来提高屏幕导航期间转换的可定制性。

特征

  • 屏幕导航期间可自定义的过渡
  • 类似于 iOS 主屏幕应用程序图标和应用程序屏幕的上下文动画
  • NavigationView 和 NavigationStack 的熟悉 API,易于使用
  • 路径支持恢复以前导航的视图

入门

要使用此库,您需要使用三个主要符号:Stack、StackLink 和 StackUnwindLink。

用法示例

  1. 在 SwiftUI 视图文件中导入 SwiftUIStack 模块:
import SwiftUIStack
  1. 在视图层次结构中使用 Stack 容器:

var body: some View {
  Stack {
    // Your views here...
  }
}
  1. 使用 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")
}
  1. 或者,使用 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 版获得许可的。有关详细信息,请参阅许可证文件。

GitHub

查看 Github