ScrollingPageControl 0.1.2

ScrollingPageControl 0.1.2

Emilio Peláez 维护。



ScrollingPageControl

ScrollingPageControl是受Instagram的分页控件启发的自定义分页控件。

默认情况下,它显示最多七个点,距离中心点越远的点越小,用户更改页面时滚动点,始终保持高亮显示的点在中心点的范围内。

点的最大数量以及中心点的数量都可以自定义,只要这些值是奇数。

其他可自定义的值包括选中点和高亮点的颜色、点的尺寸以及点之间的间隔。

使用方法

要使用ScrollingPageControl,请使用Interface Builder将其添加到视图层次中或将代码添加到其中,建议不要设置宽度和高度约束,因为控件可以自行调整大小。如果您正在使用Interface Builder,可以为Intrinsic Content Size设置一个占位符。

最简单的方法是使用一个具有isPagingEnabled设置为trueUIScrollView。将pages设置为滚动视图中的页面数,然后像下面这样实现这个方法UIScrollViewDelegate

func scrollViewDidScroll(_ scrollView: UIScrollView) {
	let page = round(scrollView.contentOffset.x / scrollView.frame.width)
	pageControl.selectedPage = Int(page)
}

确保将您的对象设置为滚动视图的delegate

自定义点

控制器为每个点使用一个UIView。默认情况下,此视图将是一个简单的圆形视图,但您可以通过遵守ScrollingPageControlDelegate协议并实现func viewForDot(at index: Int) -> UIView?来提供自己的视图。如果该函数返回nil,则将使用默认圆形点。

您可以使用该方法返回一个UIImageView,或一个绘制特定形状的UIView子类。

点视图必须使用tintColor属性来着色其内容,并在tintColorDidChange()时更新。

如果使用的是UIImageView,则可以像这样简单地使用图像作为模板:image.withRenderingMode(.alwaysTemplate)。然后,将使用UIImageViewtintColor属性对UIImage进行着色。

为了查看示例,请参考下面的“示例”说明,并查看TriangleView子类。您可以通过取消注释TestViewController.swift中的第23行并运行项目来查看其效果。

Instagram行为

当Instagram的分页控件有五个或更少的页面时,它会显示所有完整点。我们的控件默认不会这样做,但很容易重建。只需在页面数小于或等于五时,将maxDotscenterDots设置为5,其他情况下使用默认值。

if pages <= 5 {
	pageControl.maxDots = 5
	pageControl.centerDots = 5
} else {
	pageControl.maxDots = 7
	pageControl.centerDots = 3
}
pageControl.pages = pages

示例

要运行示例项目,请先克隆仓库,然后从示例目录运行pod install

安装

ScrollingPageControl可以通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中

pod 'ScrollingPageControl'

作者

EmilioPelaez, [email protected]

许可协议

ScrollingPageControl 可在 MIT 许可协议下使用。有关更多信息,请参阅 LICENSE 文件。