用到的控件:
1>UIScrollView:宽度和图片的宽度一样,因为分页的代码就一句
// 设置分页,这个分页的原理实际上是按照ScrollView的宽进行分页的,这里的图片的宽由于和ScrollView的宽式一样的所以刚好分页显示图片了
_scrollView.pagingEnabled = YES;
2>UIImageView:用来放图片的
3>UIPageControl,页码显示控件
=======================
关键部分:监听ScrollView的滚动,来告诉页码显;监听的方法:
scrollViewDidScroll // 实现协议里的监听滚动的方法,这个方法是ScrollView在滚动时,会被调用
全部代码:
#import "CXBViewController.h" #define pCount 5 // 分页显示的图片张数,或者是页数 @interface CXBViewController () <UIScrollViewDelegate> { UIPageControl *_pageControl; } @end @implementation CXBViewController - (void)viewDidLoad { [super viewDidLoad]; // 为scrollView添加图片 // 设置图片的宽和高 CGFloat w = self.view.frame.size.width; CGFloat h = self.scrollView.bounds.size.height; for (int i = 0; i < pCount; i++) { UIImageView *imageView = [[UIImageView alloc] init]; // 定义图片名,通过循环把所有的图片添加到scrollView中 NSString *imageName = [NSString stringWithFormat:@"img_%02d", i + 1 ]; imageView.frame = CGRectMake(i*w, 0, w, h); imageView.image = [UIImage imageNamed:imageName]; [self.scrollView addSubview:imageView]; } // contentSize的y值为0表示在垂直方向上不做滚动 self.scrollView.contentSize = CGSizeMake(pCount * w, 0); // 禁用滚动条,只设置水平方向的滚动条即可,竖直方向的滚动范围是0,所以没必要设置 self.scrollView.showsHorizontalScrollIndicator = NO; // 设置分页,这个分页的原理实际上是按照ScrollView的大小分页的,这里的图片的宽由于和ScrollView的宽式一样的所以刚好分页显示图片了 _scrollView.pagingEnabled = YES; // 添加分页表示符 UIPageControl *pageControl = [[UIPageControl alloc] init]; // 让它居中,就设置center属性 pageControl.center = CGPointMake(w * 0.5, h - 20); pageControl.bounds = CGRectMake(0, 0, 120, 20); // 设置显示的点的个数 pageControl.numberOfPages = pCount; // 禁止点击 pageControl.enabled = NO; pageControl.pageIndicatorTintColor = [UIColor grayColor]; pageControl.currentPageIndicatorTintColor = [UIColor brownColor]; _pageControl = pageControl; // 这里添加到view中,不能添加到ScrollView中,否则会随着滚动而消失 [self.view addSubview:pageControl]; // 监听ScrollView的滚动,来告诉页码显示 // 设置代理 _scrollView.delegate = self; } // 实现协议里的监听滚动的方法,这个方法是ScrollView在滚动时,会被调用 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { // 用contentOffset来计算当前的页码 int pageCount = self.scrollView.contentOffset.x/self.scrollView.bounds.size.width; _pageControl.currentPage = pageCount; } @end
这个简单的图片分页适合图片较少,在10张以内的;日后的笔记中会进行优化,只用两个UIImageView来循环显示图片即可;