Swift自定义PageControl

一个Swift版简单实用的自定义PageControl。
github地址:JJPageControl
OC请参考:iOS自定义PageControl

PageControl.png
PageControl.png

自定义PageControl

我们经常会用到PageControl,但是系统的PageControl只有一种样式,不支持多样化,这里简单介绍一个简单的自定义PageControl.

主要功能:

  1. 可以自定义两点之间间隙
  2. 可以定义左右间隙
  3. 可以自定义高度
  4. 可以自定义选中点的宽度
  5. 可以设置每个点的圆角大小
  6. 每个点有点击事件
  7. 可以自定义选中和非选中的图片
  8. 可以设置居左、居中、居右样式
  9. 支持长条形状
  10. 选中点可以小于非选中点

将项目工程中的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
        }
    }
}

你可能感兴趣的:(Swift自定义PageControl)