一个简单实用的自定义PageControl
github地址:XHPageControlDemo
Swift版本请参考:Swift自定义PageControl
自定义PageControl
我们经常会用到PageControl,但是系统的PageControl只有一种样式,不支持多样化,这里简单介绍一个简单的自定义PageControl.
主要功能:
- 可以自定义两点之间间隙
- 可以定义左右间隙
- 可以自定义高度
- 可以自定义选中点的宽度
- 可以设置每个点的圆角大小
- 每个点有点击事件
- 可以自定义选中和非选中的图片
- 可以设置居左、居中、居右样式
- 支持长条形状
10.选中点可以小于非选中点
实现:
将自定义PageControl类拖到项目中,并导入头文件.
//创建pageControl
XHPageControl *pageControl = [[XHPageControl alloc] initWithFrame:CGRectMake(0, 300,[UIScreen mainScreen].bounds.size.width, 30)];
//设置点的总个数
pageControl.numberOfPages = 7;
//设置非选中点的大小(宽度和高度)
pageControl.otherPointSize = CGSizeMake(12, 6);
//设置选中点的大小(宽度和高度)
pageControl.currentPointSize = CGSizeMake(24, 6);
//设置圆角大小
pageControl.pointCornerRadius = 3;
//设置两点之间的间隙
pageControl.controlSpacing = 3;
//左右间宽,只有在居左居右显示的时候才有用
pageControl.leftAndRightSpacing = 10;
//设置样式.默认居中显示
pageControl.pageAliment = PageControlMiddle;
//非选中点的颜色
pageControl.otherColor=[UIColor grayColor];
//选中点的颜色
pageControl.currentColor=[UIColor orangeColor];
//当只有一个点的时候是否隐藏,默认隐藏
pageControl.isHidesForSinglePage = YES;
//是否可以点击,默认不可以点击
pageControl.isCanClickPoint = YES;
//代理
pageControl.delegate = self;
//标记
pageControl.tag = 902;
[self.view addSubview:pageControl];
代理实现:
#pragma mark - 代理
- (void)xh_PageControlClick:(XHPageControl*)pageControl index:(NSInteger)clickIndex{
NSLog(@"%ld",clickIndex);
if(pageControl.tag == 902){
CGPoint position = CGPointMake([UIScreen mainScreen].bounds.size.width * clickIndex, 0);
[_scrollView2 setContentOffset:position animated:YES];
}
}
代码demo:XHPageControlDemo
Swift版本参考JJPageControlDemo