模仿原生 UIPageViewController
。每一页都是一个新的控制器,甚至可以是导航控制器。您可以像添加子视图一样添加任何类型的控制器。支持父视图的布局边距、分页和按索引滚动。
您可以编程方式滚动到任何页面。如果您需要用于引导页,您可以禁用手势滚动并禁用滑动关闭。
可在 iOS 12+ 上使用。
Swift Package Manager 是一种用于自动分发 Swift 代码的工具,并已集成到 swift
编译器中。 它与 Swift 构建系统集成在一起,可自动执行下载、编译和链接依赖项的过程。
设置好 Swift 包后,将其添加为依赖项就像将其添加到 Package.swift
的 dependencies
值一样简单。
dependencies: [
.package(url: "https://github.com/ivanvorobei/SPPageController", .upToNextMajor(from: "1.3.0"))
]
CocoaPods 是一个依赖管理器。 有关使用和安装说明,请访问其网站。 要使用 CocoaPods 集成,请在您的 Podfile
中指定它。
pod 'SPPageController'
如果您不想使用任何依赖管理器,您可以手动集成。 将 Sources/SPPageController
文件夹放入您的 Xcode 项目。 确保启用 Copy items if needed
和 Create groups
。
SPPageController
是一个容器控制器。 现在有两种分页系统可用 - .scroll
和 .page
。 第一种使用 UICollectionView
作为基本视图,它在处理内容偏移方面表现良好,但在设备旋转时并不完美。 第二种使用原生 UIPageViewController
。 您应该选择哪一个更适合您。
传递用作页面的子控制器,并根据需要简单地呈现页面控制器。
// Here your controllers
let controllers: [UIViewController] = []
let pageController = SPPageController(childControllers: controllers, system: .page)
present(pageController, animated: true, completion: nil)
您可以管理容器的布局边距。 苹果仍然存在这方面的错误,但我的方法可以正确地支持它。
pageController.view.layoutMargins = .init(horizontal: 50, vertical: 0)
// Don't forget enable preserve layout margins for childs:
// childController.view.preservesSuperviewLayoutMargins = true
现在,所有子视图的左右边距都将 +50pt。
如果您只想以编程方式滚动,请禁用手势在页面之间滚动。
pageController.allowScroll = false
要按索引滚动,请调用此函数。
pageController.safeScrollTo(index: 3, animated: true)
如果需要禁用手势关闭(与模态控制器相关),请将标志设置为 false
。
pageController.allowDismissWithGester = false
Я веду телеграм-канал, там публикую новости и туториалы.
С проблемой помогут в чате.
Видео-туториалы выклыдываю на YouTube