UIPageControl点击小圆点跳转到对应位置的方法

由于UIPageControl中响应事件并没有像点击的location找indexpath的方法(tableView中是可以的:indexPathForRowAtPoint:CGpoint方法)因此我们在UIPageControl需要自己来实现这种类似方法。

其他初始化不赘述。

首先:

[_pageControl addTarget:self action:@selector(clickPageController:event:) forControlEvents:UIControlEventTouchUpInside];

其次:

- (void)clickPageController:(UIPageControl *)pageController event:(UIEvent *)touchs{
    UITouch *touch = [[touchs allTouches] anyObject];
    CGPoint p = [touch locationInView:_pageControl];
    CGFloat centerX = pageController.center.x;
    CGFloat left = centerX-15.0*picNum/2;
    [_pageControl setCurrentPage:(int ) (p.x-left)/15];
    [_scrollView setContentOffset:CGPointMake(_pageControl.currentPage*DEVICE_WIDTH, 0)];

    NSLog(@"%f",(p.x-left)/15);
}

首先拿到UIPageControl的中心,由于UIPageControl继承于UIControl,UIControl继承于UIView,因此有center属性。接着计算最左侧的值,left = centerX-15.0*picNum/2,(picNum是页数)。用event拿到我们点击的位置在_pageControl上的位置,(p.x-left)/15计算点击的位置是第几页,最后调用setCurrentPage方法。然后可以用setContentOffset方法把scrollView转到那个页数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值