MaterialPageControl 2.0.0

MaterialPageControl 2.0.0

Alonso 维护。



  • Alonso Alvarez

MaterialPageControl

Version License Platform Swift 5

Swift 版本的 material-components-ios/PageControl,受 Material Design 规范中动画和布局的影响。

示例

安装

CocoaPods

PageViewController 可通过 CocoaPods 获得。要安装,请将以下代码行添加到 Podfile 中

pod "MaterialPageControl"

Swift 包管理器

要使用 Swift 包管理器 集成,请将以下内容添加到您的 Package.swift 中,作为依赖项

.package(url: "https://github.com/DeluxeAlonso/MaterialPageControl.git", .upToNextMajor(from: "1.0.0"))

使用方法

您可以通过代码或界面构建器来初始化 MaterialPageControl,并且必须始终设置其 numberOfPages 属性。

let pageControl = MaterialPageControl()
pageControl.pageIndicatorTintColor = .gray
pageControl.currentPageIndicatorTintColor = .black
pageControl.numberOfPages = 3

MaterialPageControl 设计用于与滚动视图配合使用。您必须实现三个滚动视图代理方法(-scrollViewDidScroll、-scrollViewDidEndDecelerating 和 -scrollViewDidEndScrollingAnimation)并将它们类似这样转发给页面控制器。

func scrollViewDidScroll(_ scrollView: UIScrollView) {
  pageControl.scrollViewDidScroll(scrollView)
}

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
  pageControl.scrollViewDidEndDecelerating(scrollView)
}

func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
  pageControl.scrollViewDidEndScrollingAnimation(scrollView)
}

如果您想具有页面控制器的默认点击手势行为,您应该这样实现。

pageControl.addTarget(self, action: #selector(didChangePage(sender:)), for: .valueChanged)

@objc func didChangePage(sender: MaterialPageControl) {
    var offset = collectionView.contentOffset
    offset.x = CGFloat(sender.currentPage) * scrollView.bounds.size.width
    scrollView.setContentOffset(offset, animated: true)
}

作者

Alonso Alvarez,[email protected]

许可证

MaterialPageControl 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。