#import "MainViewController.h"
#define Screen_Width self.view.bounds.size.width
@interface MainViewController ()<UIScrollViewDelegate>
@property (nonatomic, assign)int flag; // 记录当前翻到了第几页
@property (nonatomic,retain) UIScrollView *scrollView;
@property (nonatomic,retain) UIPageControl *pageControl;
@end
@implementation MainViewController
- (void)dealloc
{
[_scrollView release];
[_pageControl release];
[super dealloc];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(20, 20, 335, 500)];
self.scrollView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:self.scrollView];
[_scrollView release];
// 如果滑动的页数是4页
NSInteger num = 4;
for (NSInteger i = 0; i < num; i++) {
//每次循环都创建一个imageView并且赋值
UIScrollView *scrollView1 = [[UIScrollView alloc] initWithFrame:CGRectMake(i * 335, 0, 335, 500)];
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 335, 500)];
NSString *name = [NSString stringWithFormat:@"baby%ld.jpg", i];
imageView.image = [UIImage imageNamed:name];
[scrollView1 addSubview:imageView];
[self.scrollView addSubview:scrollView1];
[scrollView1 release];
[imageView release];
scrollView1.delegate = self;
scrollView1.maximumZoomScale = 2;
scrollView1.minimumZoomScale = 0.5;
}
// 设置滚动的范围
self.scrollView.contentSize = CGSizeMake(335 * 4, 0);
self.scrollView.pagingEnabled = YES;
self.scrollView.delegate = self;
self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(20, 520, 335, 40)];
self.pageControl.backgroundColor = [UIColor blackColor];
// 设置点得数量
self.pageControl.numberOfPages = num;
// 设置点的颜色
// 非当前选择的点的颜色
self.pageControl.pageIndicatorTintColor = [UIColor greenColor];
// 当前选择的点的颜色
self.pageControl.currentPageIndicatorTintColor = [UIColor redColor];
[self.pageControl addTarget:self action:@selector(pageAction:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:self.pageControl];
[_pageControl release];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
if (scrollView != _scrollView) {
// 只有小scrollView才允许缩放
return [scrollView.subviews firstObject];
}else{
return nil;
}
}
//UIPageControl类型对象中调用的方法
- (void)pageAction:(UIPageControl *)pageC
{
NSLog(@"换页");
// 点击pageControl控制scrollView翻页
// self.scrollView.contentOffset = CGPointMake(335 * pageC.currentPage, 0);
[self.scrollView setContentOffset:CGPointMake(335 * pageC.currentPage, 0) animated:YES];
}
//使页面上点的变化与视图的变化一致
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (_scrollView == scrollView) {
int halfX = scrollView.frame.size.width / 2;
_pageControl.currentPage = (scrollView.contentOffset.x - halfX) / (scrollView.frame.size.width) + 1;
}
//self.pageControl.currentPage = scrollView.contentOffset.x / 335;
}
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
if (_scrollView == scrollView) {
// 方法1: 每次减速结束都让scollView所有的scrollView子视图缩放变为1
// for (UIScrollView * scroll in scrollView.subviews) {
// if ([scroll isKindOfClass:[UIScrollView class]]) {
// scroll.zoomScale = 1.0;
// }
// }
// 方法2: 每次减速结束, 如果当前的位置(currentPage)跟之前的位置(flag)不同, 让之前的小scrollView缩放变为1, 并且把 flag 更新为 当前的位置(currentPage)
int index = _scrollView.contentOffset.x / Screen_Width;
_pageControl.currentPage = index;
if (index != _flag) {
UIScrollView *tempScro = [_scrollView.subviews objectAtIndex:_flag];
tempScro.zoomScale = 1.0;
_flag = index;
}
}
}