第一步:在ScrollViewController中添加代理UIScrollViewDelegate
ScrollViewController.h
#import <UIKit/UIKit.h>
@interface ScrollViewController : UIViewController<UIScrollViewDelegate>
@end
第二步:ScrollViewController.m
#import "ScrollViewController.h"
@interface ScrollViewController ()
{
UIScrollView * _scrollView;
UIScrollView * _onescrollView;
UIPageControl * _pageControl;
}
@end
@implementation ScrollViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
//创建滚动视图与屏幕大小相等
_scrollView = [[UIScrollView alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
//添加到view视图上
_scrollView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:_scrollView];
[_scrollView release];
_scrollView.contentSize = CGSizeMake((_scrollView.frame.size.width)*3, _scrollView.frame.size.height);
//设置代理
_scrollView.delegate = self;
//设置分页
_scrollView.pagingEnabled = YES;
//第一个小的ScrollView上添加图片并将小ScrollView加入大的contentSize
for (int i = 0; i< 3; i++) {
_onescrollView = [[UIScrollView alloc] initWithFrame:CGRectMake((_scrollView.frame.size.width)*i, 0, _scrollView.frame.size.width, _scrollView.frame.size.height)];
_onescrollView.contentSize = CGSizeMake(_scrollView.frame.size.width, _scrollView.frame.size.height);
[_scrollView addSubview:_onescrollView];
[_onescrollView release];
_onescrollView.tag = 200+i;
_onescrollView.delegate = self;
UIImage * image1 = [UIImage imageNamed:[NSString stringWithFormat:@"h%d.jpeg",i+1]];
UIImageView * imageView1 = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, _scrollView.frame.size.width, _scrollView.frame.size.height)];
imageView1.image = image1;
imageView1.tag = 100+i;
_onescrollView.maximumZoomScale = 3;
_onescrollView.minimumZoomScale = 0.1;
[_onescrollView addSubview:imageView1];
[imageView1 release];
}
//设置滑动块
_pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(100, 300, 120, 40)];
[self.view addSubview:_pageControl];
_pageControl.backgroundColor = [UIColor whiteColor];
_pageControl.numberOfPages = 3;
_pageControl.pageIndicatorTintColor = [UIColor blackColor];
_pageControl.currentPageIndicatorTintColor = [UIColor blueColor];
[_pageControl addTarget:self action:@selector(didClickPageAction:) forControlEvents:UIControlEventValueChanged];
}
//点击页码时产生事件
-(void)didClickPageAction:(UIPageControl *)sender
{
//当前点击的页码
NSInteger currentPage = sender.currentPage;
//距离原点的差值
CGPoint offset = _scrollView.contentOffset;
offset.x = currentPage * _scrollView.frame.size.width;
[_scrollView setContentOffset:offset animated:YES];
}
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{ //
CGFloat offsetx = _scrollView.contentOffset.x;
CGFloat pageWidth = _scrollView.frame.size.width;
NSInteger pageName = offsetx/pageWidth;
UIScrollView * currentView = [_scrollView.subviews objectAtIndex:pageName];
UIImageView * image = (UIImageView *)[currentView viewWithTag:100+pageName];
return image;
return nil;
}
//点击结束时页码的位置
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//取方法停止时x宽的大小
CGFloat offsetx = _scrollView.contentOffset.x;
NSLog(@"offsex = %f,",offsetx);
//页宽
CGFloat pageWidth = _scrollView.frame.size.width;
//计算当前显示第几页
NSInteger pageName = offsetx/pageWidth;
NSLog(@"pageName = %ld",(long)pageName);
//计算结果设置给Page
_pageControl.currentPage = pageName;
// UIScrollView * currentScrollView = [_scrollView.subviews objectAtIndex:pageName];
// NSLog(@"%@",_scrollView.subviews);
UIScrollView * currentScrollView = (UIScrollView *)[_scrollView viewWithTag:200+pageName];
currentScrollView.zoomScale = 1.0;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end