UI笔记_UIPageControl

UIPageControl

UIPageControl是屏幕翻页时下方出现的小圆点,用于指示当前第几页,通常和与UIScrollView配合使用。

// 创建UIPageControl
UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(20, 400, 280, 50)];
// 设置页数(圆点个数)
[pageControl setNumberOfPages:7];
// UIPageControl继承于UIControl和其他子类一样 使用addTarget方法添加事件,触发方式为valueChanged
[pageControl addTarget:self action:@selector(pageControlAction:) forControlEvents:UIControlEventValueChanged];[self.view addSubview:pageControl];[pageControl release];

未实现代理方法之前,pageControl只能通过点击pageControl来翻页并不与scrollView中的滚动关联,所以需要为scrollView设置代理,

当scrollView滚动到相应位置时,改变pageControl的currentPage来实现pageControl和scrollView匹配

(注意 这里是先滚动视图,再改变pageControl的值,所以代理要设置在scrollView中)

实现方法:

签订协议,并为scrollView设置代理人为self(当前viewController代理)

将pageControl对象设置为属性,方便在代理方法的实现中改变currentPage

实现代理方法,至于代理方法的实现位置,可以是滚动开始,也可以是滚动结束,注意偏移量的匹配

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    // scrollView的偏移量,除以scrollView的宽度,得到当前页数
    int pageNumber = scrollView.contentOffset.x / scrollView.frame.size.width;
    //  将页数赋值给pageControl,使他跟随scrollView的滚动而变化
    self.page setCurrentPage:pageNumber];
}
 

以上方法可以通过滚动视图来控制圆点的变化,反之,如果想要通过圆点的点击或者滑动来改变滚动视图,需要实现在pageControl定义的方法

- (void)pageControlAction:(UIPageControl *)pageControl
{
    // 获取到pageControl的currentPage乘以scrollView的宽度 把结果赋值给scrollView的偏移量,
    // 使之跳转到对应图片位置,从而实现点击pageControl来改变scrollView
    [scrollView setContentOffset:[CGPointMake(pageControl.currentPage * self.view.frame.size.width), 0]];
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值