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]];
}