SPPageController

模仿原生 UIPageViewController。每一页都是一个新的控制器,甚至可以是导航控制器。您可以像添加子视图一样添加任何类型的控制器。支持父视图的布局边距、分页和按索引滚动。

您可以编程方式滚动到任何页面。如果您需要用于引导页,您可以禁用手势滚动并禁用滑动关闭。

导航

安装

可在 iOS 12+ 上使用。

Swift Package Manager

Swift Package Manager 是一种用于自动分发 Swift 代码的工具,并已集成到 swift 编译器中。 它与 Swift 构建系统集成在一起,可自动执行下载、编译和链接依赖项的过程。

设置好 Swift 包后,将其添加为依赖项就像将其添加到 Package.swiftdependencies 值一样简单。

dependencies: [
    .package(url: "https://github.com/ivanvorobei/SPPageController", .upToNextMajor(from: "1.3.0"))
]

CocoaPods

CocoaPods 是一个依赖管理器。 有关使用和安装说明,请访问其网站。 要使用 CocoaPods 集成,请在您的 Podfile 中指定它。

pod 'SPPageController'

手动

如果您不想使用任何依赖管理器,您可以手动集成。 将 Sources/SPPageController 文件夹放入您的 Xcode 项目。 确保启用 Copy items if neededCreate 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)

关闭 (Dismiss)

如果需要禁用手势关闭(与模态控制器相关),请将标志设置为 false

pageController.allowDismissWithGester = false

俄语社区 (此条保留原文,因为是俄语社区链接)

Я веду телеграм-канал, там публикую новости и туториалы.
С проблемой помогут в чате.

Видео-туториалы выклыдываю на YouTube

Tutorials on YouTube