一个Swift版简单实用的自定义PageControl。
github地址:JJPageControl
OC请参考:iOS自定义PageControl
自定义PageControl
我们经常会用到PageControl,但是系统的PageControl只有一种样式,不支持多样化,这里简单介绍一个简单的自定义PageControl.
主要功能:
- 可以自定义两点之间间隙
- 可以定义左右间隙
- 可以自定义高度
- 可以自定义选中点的宽度
- 可以设置每个点的圆角大小
- 每个点有点击事件
- 可以自定义选中和非选中的图片
- 可以设置居左、居中、居右样式
- 支持长条形状
- 选中点可以小于非选中点
将项目工程中的JJPageControl拖拽到你的项目中.
//创建pageControl
var pageControl2 = JJPageControl()
pageControl2.frame = CGRect(x: 0, y: 300, width: UIScreen.main.bounds.size.width, height: 30)
//选中点的颜色
pageControl2.currentColor = UIColor.red
//非选中点的颜色
pageControl2.otherColor = UIColor.blue
//设置圆角大小
pageControl2.pointCornerRadius = 2
//设置选中点的大小(宽度和高度)
pageControl2.currentPointSize = CGSize(width: 6, height: 12)
//设置非选中点的大小(宽度和高度)
pageControl2.otherPointSize = CGSize(width: 10, height: 6)
//设置样式.默认居中显示
pageControl2.pageAliment = .Center
//设置点的总个数
pageControl2.numberOfPages = 7
//交互打开
pageControl2.isUserInteractionEnabled = true
//设置两点之间的间隙
pageControl2.controlSpacing = 3
//左右间宽,只有在居左居右显示的时候才有用
pageControl2.leftAndRightSpacing = 10
//是否可以点击,默认不可以点击
pageControl2.isCanClickPoint = true
//当只有一个点的时候是否隐藏,默认隐藏
pageControl2.isHidesForSinglePage = YES;
//标记
pageControl2.tag = 902
//代理
pageControl2.delegate = self
view.addSubview(pageControl2)
实现代理方法:
extension ViewController:JJPageControlDelegate{
func jj_pageControlClick(pageControl: JJPageControl, index: Int) {
print("带击了第\(index)个")
}
}
修改当前选中
extension ViewController: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let currentIndex = Int(scrollView.contentOffset.x / UIScreen.main.bounds.size.width)
let tag = scrollView.tag
switch tag {
case 10002:
pageControl2.currentPage = currentIndex
default:
return
}
}
}