页控件默认是无法定位点击的,不能实现当前页为首页时,点击跳转到末尾的效果。
页控件需要了解的一些信息:
- 默认小圆点的矩阵宽高为7px左右
- 小圆点之间的空白间距为9px左右
在页控件上覆盖同等数量的透明按钮,实现精确定位的点击效果,类似汤姆猫点击图片的头部,手,脚等部位会产生相应动画,原理也是在图片上添加透明的按钮。
01. // 注意UIButton按钮是添加到self.view上的,而不是UIPageControl,试了下,UIPageControl添加不了子视图
02. for(int i = 0; i < ... ; i++)
03. {
04. //循环添加按钮
05. UIButton *button = [[UIButton alloc] init];
06. button.center = CGPointMake(小圆点的中心点.x,小圆点的中心点.y);
07. button.bounds = CGRectMake(0,0,8,8); //略大于小圆点的矩形
08. button.backgoundColor = [UIColor clearColor];
09. // 设置按钮的tag值,用于标识按钮
10. button.tag = i;
11. [self.view addSubview:button];
12. // 对按钮添加监听,监听UIControlEventTouchDown事件
13. [button addTarget:self action:@selector(pressButton:) forControlEvents:UIControlEventTouchDown];
14. //对按钮继续添加监听,监听UIControlEventTouchUpInside事件
15. [button addTarget:self action:手指离开时,重启定时器 forControlEvents:UIControlEventTouchUpInside];
16. }
17. ...
实现手指点击按钮时,停止定时器,并且切换图片,至于页控件的当前页码值会跟随图片的切换自动更改,之前在自动轮播器中设置过。
01. ...
02. - (void)pressButton:(UIButton *)button
03. {
04. //获取按钮的标识值作为页码
05. NSInteger page = button.tag;
06. [self.scrollview setContentOffset:CGSizeMake(page * self.scrollview.frame.size.width, 0);
07. // 页控件的当前页码设置是在监听滚动视图滚动时实现的
08. }
09. ...