//创建scrollview
self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0,self.frame.size.width,self.frame.size.height)];
self.scrollView.bounces = YES;
self.scrollView.pagingEnabled = YES;
self.scrollView.showsHorizontalScrollIndicator = NO;
self.scrollView.showsVerticalScrollIndicator = NO;
//创建pageControl
self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(self.frame.size.width-100, self.scrollView.frame.size.height-10 , 100, 10)];
self.pageControl.currentPageIndicatorTintColor = [UIColor redColor];
self.pageControl.pageIndicatorTintColor = [UIColor blackColor];
//scrollview 的contentSize大小
self.mainView.scrollView.contentSize = CGSizeMake(self.view.frame.size.width *(self.imageArr.count+2), self.mainView.scrollView.frame.size.height);
//默认从第一页开始
[self.mainView.scrollView setContentOffset:CGPointMake(0, 0)];
[self.mainView.scrollView scrollRectToVisible:CGRectMake(ScreenWidth, 0, ScreenWidth, self.mainView.scrollView.frame.size.height) animated:NO];
self.mainView.scrollView.delegate = self;
self.mainView.pageControl.numberOfPages = self.imageArr.count;
self.mainView.pageControl.currentPage = 0;
[self.mainView.pageControl addTarget:self action:@selector(turnPage) forControlEvents:UIControlEventValueChanged];
//添加图片
for (int i = 0; i < self.imageArr.count; i ++) {
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(i*ScreenWidth+ScreenWidth, 0, ScreenWidth, self.mainView.scrollView.frame.size.height)];
ScrollImage *image = [self.imageArr objectAtIndex:i];
[imageView sd_setImageWithURL:[NSURL URLWithString:image.imgsrc ]placeholderImage:[UIImage imageNamed:@"02.png"]];
imageView.userInteractionEnabled = YES;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didClickImageView:)];
[imageView addGestureRecognizer:tap];
imageView.tag = 100+i;
[self.mainView.scrollView addSubview:imageView];
}
//取最后一张图片放在第0页
UIImageView *firstImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, self.mainView.scrollView.frame.size.height)];
ScrollImage *firstImage = [self.imageArr objectAtIndex:self.imageArr.count - 1];
//指定图片
[firstImageView sd_setImageWithURL:[NSURL URLWithString:firstImage.imgsrc] placeholderImage:[UIImage imageNamed:@"02.png"]];
[self.mainView.scrollView addSubview:firstImageView];
//取第一张图片放在最后一页
UIImageView *lastImageView = [[UIImageView alloc] initWithFrame:CGRectMake(ScreenWidth*(self.imageArr.count + 1), 0, ScreenWidth, self.mainView.scrollView.frame.size.height)];
ScrollImage *lastImage = [self.imageArr objectAtIndex:0];
[lastImageView sd_setImageWithURL:[NSURL URLWithString:lastImage.imgsrc] placeholderImage:[UIImage imageNamed:@"02.png"]];
[self.mainView.scrollView addSubview:lastImageView];
//定时器 循环播放
self.myTimer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(runTimePage) userInfo:nil repeats:YES];
}
#pragma mark -----------轮播实现-------------
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
//关闭定时器
[self.myTimer invalidate];
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
//开启定时器
self.myTimer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(runTimePage) userInfo:nil repeats:YES];
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat pagewidth = ScreenWidth;
NSInteger page = floor((self.mainView.scrollView.contentOffset.x - pagewidth/([self.imageArr count]+2))/pagewidth)+1;
page --; // 默认从第二页开始
self.mainView.pageControl.currentPage = page;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
CGFloat pagewidth = ScreenWidth;
NSInteger currentPage = floor((self.mainView.scrollView.contentOffset.x - pagewidth/ ([self.imageArr count]+2)) / pagewidth) + 1;
if (currentPage==0)
{
[self.mainView.scrollView scrollRectToVisible:CGRectMake(ScreenWidth * [self.imageArr count],0,ScreenWidth,self.mainView.scrollView.frame.size.height) animated:NO]; // 序号0 最后1页
}
else if (currentPage==([self.imageArr count]+1))
{
[self.mainView.scrollView scrollRectToVisible:CGRectMake(ScreenWidth,0,ScreenWidth,self.mainView.scrollView.frame.size.height) animated:NO]; // 最后+1,循环第1页
}
}
- (void)turnPage {
NSInteger page = self.mainView.pageControl.currentPage; // 获取当前的page
[self.mainView.scrollView scrollRectToVisible:CGRectMake(ScreenWidth*(page+1),0,ScreenWidth,self.mainView.scrollView.frame.size.height) animated:NO]; // 触摸pagecontroller那个点点 往后翻一页 +1
}
- (void)runTimePage {
NSInteger page = self.mainView.pageControl.currentPage; // 获取当前的page
page++;
page = page > (self.imageArr.count - 1) ? 0 : page ;
self.mainView.pageControl.currentPage = page;
[self turnPage];
}