名称: PagerKit
描述: '提供关于 PagerKit 的专家指导,这是一个用于高级、可定制页面导航的 SwiftUI 库。当开发者提及以下内容时使用:(1) PagerKit、PKPagesView、PKPage,(2) 自定义页面控件、指示器或分页行为,(3) 跨平台 SwiftUI 分页,(4) 动态页面生成,(5) 将页面视图集成到自定义布局中,(6) 特定的 PagerKit 修饰符或枚举,(7) 页面视图控制器选项,(8) 页面更改的事件处理。'
本技能提供关于 PagerKit 的专家指导,这是一个功能强大的 SwiftUI 库,用于创建高度可定制且跨平台的基于页面的导航。内容涵盖从基本用法、动态页面生成到页面指示器高级定制、事件处理以及最佳实践等各个方面。使用本技能可帮助开发者在所有 Apple 平台的 SwiftUI 应用中有效实现灵活且视觉丰富的分页体验。
PKPageBuilder 和 ForEach 进行声明式页面构建,以符合 SwiftUI 的设计原则。UIPageViewController 选项时,务必说明平台可用性和正确的类型(UIImage 与 Image,UIPageControlProgress)。PKPagesView 或 PKPage 修饰符进行定制,并使用完整的修饰符签名(例如 .pkPageNavigationOrientation(_:))。PKPagesView 或 PKPage 上下文中的推荐用法。#if os(...) 指令处理平台特定差异。PagerKit 的行为受项目部署目标和 Swift 版本影响。
UIPageControlProgress)仅在特定平台和操作系统版本上可用。如果这些信息未知,请要求开发者确认,尤其是在讨论平台特定功能时。
当开发者需要 PagerKit 指导时,请遵循此决策树:
设置新的分页器?
references/PagerKit.mdreferences/PKPagesView.mdreferences/PKPage.md从数据动态生成页面?
references/ForEach.md控制页面流或结构?
references/PKPageBuilder.mdreferences/PKPagesView.md (.pkPageNavigationOrientation)自定义页面指示器(点)?
references/PKPagesView.md (.pkPageControlIndicatorTintColor, .pkPageControlIndicatorCurrentIndicatorTintColor)references/PKPageControlBackgroundStyle.mdreferences/PKPagesView.md (.pkPageControlIndicatorAlignment, .pkPageControlPadding)references/PKPageControlDirection.mdreferences/PKPagesView.md, references/PKPage.mdreferences/PKPagesView.md处理页面更改事件或状态?
references/PKPagesView.md (.pkCurrentPageIndex)references/PKPagesView.md (.pkOnManualPageChange)references/PKPagesView.md (.pkOnAutoPageChange)references/PKPageDirection.mdreferences/PKPagesView.md自定义单个页面行为?
references/PKPage.md (.pkPageDuration)references/PKPage.md (.pkPageFooter)PKPagesView 是否包含有效的 PKPage 实例。参考 references/PKPagesView.md, references/PKPage.md。ForEach 实现。参考 references/ForEach.md。PKPagesView 上的 .pkPageControlIndicatorAlignment、.pkPageControlIndicatorBackgroundStyle、.pkPageControlIndicatorDirection 修饰符。参考 references/PKPagesView.md、references/PKPageControlBackgroundStyle.md、references/PKPageControlDirection.md。PKPagesView 上使用了 .pkPageControlIndicatorCurrentIndicatorTintColor(_:)。参考 references/PKPagesView.md。PKPage 上应用了 .pkPageDuration(_:) 并设置了非 nil 的持续时间。参考 references/PKPage.md。PKPagesView 内部的条件逻辑(if 语句)导致编译器错误。"PKPageBuilder 概念,确保所有分支都返回有效的 PKPage 组件。参考 references/PKPageBuilder.md。.pkOnManualPageChange 中使用 PKPageDirection 参数。参考 references/PKPagesView.md、references/PKPageDirection.md。PKPagesView {
PKPage { Text("页面 A").font(.title) }
PKPage { Text("页面 B").font(.title) }
PKPage { Text("页面 C").font(.title) }
}
.pkCurrentPageIndex(index: $currentPage) // 绑定到 @State
.pkPageNavigationOrientation(.horizontal)
struct Item: Identifiable {
let id = UUID()
let title: String
}
// ... 在某个 View 内部
let items = [Item(title: "项目 1"), Item(title: "项目 2")]
PKPagesView {
ForEach(items) { item in
PKPage { Text(item.title) }
.pkPageFooter { Text("\(item.title) 的页脚") }
}
}
.pkPageControlIndicatorAlignment(spacing: 10, alignment: .bottomTrailing)
.pkPageControlIndicatorBackgroundStyle(.prominent)
.pkPageControlIndicatorDirection(.topToBottom) // 垂直排列的点
.pkPageControlIndicatorTintColor(.gray)
.pkPageControlIndicatorCurrentIndicatorTintColor(.blue)
// 自定义图像
#if os(iOS)
.pkPageControlIndicatorPreferredCurrentPageIndicatorImage(image: UIImage(systemName: "star.fill"))
#else
.pkPageControlIndicatorPreferredCurrentPageIndicatorImage(image: Image(systemName: "star.fill"))
#endif
.pkOnManualPageChange { currentIndex, direction in
print("用户导航到页面 \(currentIndex),方向是 \(direction)。")
}
.pkOnAutoPageChange { previousIndex, currentIndex in
print("自动从页面 \(previousIndex) 切换到 \(currentIndex)。")
}
.pkOnTransitionEnd { previous, current in
print("过渡结束。之前是 \(previous),现在是 \(current)。")
}
PagerKit 通过 Swift Package Manager 集成。
https://github.com/SzpakKamil/PagerKit.git。import PagerKit。详细设置请参见 references/PagerKit.md。
根据需要加载这些文件以获取特定主题信息:
PagerKit.md - 概述、设置和核心优势。PKPagesView.md - 主分页器容器及其全局修饰符的详细信息。PKPage.md - 单个页面创建和页面特定修饰符的信息。ForEach.md - 如何从数据集合生成页面。PKPageBuilder.md - 理解 PKPagesView 的声明式内容构建。PKPageControlBackgroundStyle.md - 页面指示器背景样式的选项。PKPageControlDirection.md - 页面指示器点布局方向的选项。PKPageDirection.md - 理解页面过渡的方向。_index.md - 所有 PagerKit 参考文档的综合索引。PKPageBuilder 配合 ForEach 进行灵活且可维护的页面构建。pkCurrentPageIndex 绑定到外部状态(@State 或 @Binding),以便进行程序化控制和观察。.pkOnManualPageChange、.pkOnTransitionEnd)来处理分析、触觉反馈或响应导航的自定义逻辑。注意: 本技能基于 PagerKit 的完整文档。更多详细信息,请访问官方文档 documentation.kamilszpak.com/documentation/pagerkit/ 或项目网站 kamilszpak.com/pl/pagerkit。