SwiftUI 的无限旋转木马
PageViewer
为 SwiftUi AnyView 做出适配的 UIPageViewController
第 2 版的更改
- 响应式修饰符。
- 新的显示和过渡逻辑
- 委托接受事件
- 软件控制过渡的外部控制器
- 您可以独立确定要忽略哪些安全区域以及哪些安全区域不忽略
- 可以完全控制指示器的外观
- 手势锁定
- 在通过锚点更改索引时,不再使用 AnyView 创建 UIPageViewController 的视图数组
- 已添加带示例的文档
- 修复了在通过锚点更改索引时同时导航和手势崩溃的问题
- 修复了在某个时间点完成时 Binding 上有多个新值时丢失 Binding 的问题
- 限制同时将新值分配给 Binding 索引时的过渡(如果快速点击更改索引的按钮),这可能导致崩溃
安装
Swift 包管理器
Swift 包管理器
是一个用于自动分发 Swift 代码的工具,并且已集成到 swift
编译器中。
设置好 Swift 包后,将 PageViewer 添加为依赖项就像将其添加到 Package.swift
的 dependencies
值中一样简单。
dependencies: [
.package(url: "https://github.com/cbepxbeo/page-viewer.git", .upToNextMajor(from: "0.0.1"))
]
用法
如果您不想,则无需创建自己的提供程序。默认情况下,该软件包提供了您所需的一切。
使用索引和元素从集合生成带 Binding 的 Vew。
@State var index: Int = 0
let collection: [Int] = [1,2,3,4,5]
var body: some View {
PageView(collection, index: $index) { index, element in
VStack {
Text("Element: \(element)")
Text("Index: \(index)")
}
}
}
使用索引和元素从集合生成不带 Binding 的 Vew。
let collection: [Int] = [1,2,3,4,5]
var body: some View {
PageView(collection) { index, element in
VStack {
Text("Element: \(element)")
Text("Index: \(index)")
}
}
}