//创建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]; }