最终效果图:
BeyondViewController.h
// // BeyondViewController.h // 8_scrollVIew分页浏览 // // Created by beyond on 14-7-25. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import <UIKit/UIKit.h> @interface BeyondViewController : UIViewController @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; @end
BeyondViewController.m
// // BeyondViewController.m // 8_scrollVIew分页浏览 /* 以下代码存在性能问题,仅作为新特性介绍界面使用 不可作为图片浏览器~ 1,一次性生成8个ImageView会存在性能问题,解决方法:使用3个ImageView(或2个ImageView) 2,另外,循环播放还没实现 */ // Created by beyond on 14-7-25. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import "BeyondViewController.h" // 图片总张数 #define kImgCount 8 @interface BeyondViewController ()<UIScrollViewDelegate> { // 分页条码指示控制器 UIPageControl *_pageControl; } @end @implementation BeyondViewController - (void)viewDidLoad { [super viewDidLoad]; // 调用自定义方法 [self scrollViewWithPage]; } // 带分页功能的scrollView - (void)scrollViewWithPage { // 1,设置scrollView的可视大小,内容大小,等属性 _scrollView.frame = self.view.bounds; _scrollView.showsHorizontalScrollIndicator = NO; _scrollView.showsVerticalScrollIndicator = NO; _scrollView.bouncesZoom = NO; _scrollView.bounces = NO; // 设置代码,监听滚动完毕的事件 _scrollView.delegate = self; // 2,创建8个UIImageView,添加到scrollView // 每个图片宽,高 CGFloat imgW = self.view.bounds.size.width; CGFloat imgH = self.view.bounds.size.height; for (int i=0; i<kImgCount; i++) { // UIImageView // 图片名:01.jpg ~ 07.jpg NSString *imgName = [NSString stringWithFormat:@"0%d.png",i+1]; UIImageView *imgView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:imgName]]; // 如果保持imageView里面的image不变形 //设置UIImageView的对象的以下两个属性,可以图片不变形且充满图片框为前提进行填充。 imgView.clipsToBounds = YES; imgView.contentMode = UIViewContentModeScaleAspectFill; // y是0,x是一张连着一张 imgView.frame = CGRectMake(i*imgW, 0, imgW, imgH); // 将所有的图片添加到scrollView [_scrollView addSubview:imgView]; } // 3,这个最重要,是滚动区域 // _scrollView.contentSize = CGSizeMake(kImgCount*imgW, imgH); // 0代表高度方向不滚动 _scrollView.contentSize = CGSizeMake(kImgCount*imgW, 0); // 按scrollView的宽度分页 _scrollView.pagingEnabled = YES; // 4,pageControl分页指示条 _pageControl = [[UIPageControl alloc]init]; // pageControl分页指示条的中心点在底部中间 _pageControl.numberOfPages = kImgCount; //这个最重要 _pageControl.center = CGPointMake(imgW*0.5, imgH-20); _pageControl.bounds = CGRectMake(0, 0, 150, 15); _pageControl.pageIndicatorTintColor = [UIColor grayColor]; _pageControl.currentPageIndicatorTintColor = [UIColor redColor]; _pageControl.enabled = NO; //取消其默认的点击行为 [self.view addSubview:_pageControl]; } /* 在这个方法里面,可以进行性能优化,因为时时在监听滚动,从而随时进行3个UIImageView的拼接,甚至可精简到只有2个UIImageView进行动态拼接 */ - (void)scrollViewDidScroll:(UIScrollView *)scrollView { // scrollView的contentOffset是最重要的属性,点,x,y记录的是滚动的距离,相对的是scrollView的可视界面的左上角的距离 CGPoint offset = scrollView.contentOffset; int curPageNo = offset.x / _scrollView.bounds.size.width; _pageControl.currentPage = curPageNo ; } @end