iOS UIScrollView 迴圈滾動(loop)
阿新 • • 發佈:2019-01-26
上週,公司讓把潮流資訊介面改成網易新聞那種迴圈滾動的。能力有限,改了一週時間,改到最後,自己也不是很滿意,交給無線產品去測試了,不知道能否滿意,呵呵。到最後是真的開始佩服網易新聞的程式設計師,和他們的差距還是很大的。
現在趁著有時間,把想法和思路做個標記。
UIScrollView迴圈,我的思路是這樣的。比如有3張圖片a,b,c ,想做成迴圈滾動的那麼可以思路是(c,a,b,c,a)。五張圖,但是隻顯示中間的(a,b,c)。當滑動到a的時候,c 也會顯示出來,視覺上像是迴圈了,這個時候,要新增一個響應事件,改變scrollView的contenOffSet屬性。讓滾動檢視滾動到(c,a,b,c,a)中b後面的C的位置。當滑到(c,a,b,c,a)中(b,c)後面那個a 的時候,也是這樣的道理,當滑動到a,的時候,感覺是迴圈到了最前面的這張a圖片,然後在這個時候,新增一個響應事件,改變scrollView的contentOffSet屬性,讓滾動檢視滾動到(c,a,b,c,a)中第一個a的位置。這樣就實現了UIScrollView的迴圈滾動。
1.在什麼時候觸發那個響應事件:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
這個方法只要滑動就能監聽的到,在這個方法裡面判斷個人覺得最合適
-(void)scrollViewDidScroll:(UIScrollView *)scrollView { CGPoint contetPoint = scrollView.contentOffset; float contetOffX = contetPoint.x; if(contetOffX == 0.0f) { scrollView.contentOffset= CGPointMake(self.view.frame.size.width *3,0); } else if (contetOffX == self.view.frame.size.width *4) { scrollView.contentOffset = CGPointMake(self.view.frame.size.width, 0); } if(contetOffX == 0.0f) { [self loadImage:0]; [self loadImage:1]; } else if(contetOffX == self.view.frame.size.width) { [self loadImage:1]; [self loadImage:2]; } else if(contetOffX == self.view.frame.size.width*2) { [self loadImage:2]; [self loadImage:3]; } else if(contetOffX == self.view.frame.size.width *3) { [self loadImage:3]; [self loadImage:4]; } else if(contetOffX == self.view.frame.size.width *4) { [self loadImage:4]; [self loadImage:0]; } } -(void)loadImage : (int) num { NSString *image1= @"http://img0.bdstatic.com/img/image/shouye/dengni51.jpg"; NSString *image2= @"http://img0.bdstatic.com/img/image/shouye/mxym-9409417791.jpg"; NSString *image3= @"http://img0.bdstatic.com/img/image/shouye/mxly-9624794581.jpg"; UIImageView *imageView = [_imagesArray objectAtIndex:num]; if(num == 0) { [imageView setImageWithURL:[NSURL URLWithString:image3]]; } else if (num == 1) { [imageView setImageWithURL:[NSURL URLWithString:image1]]; } else if(num ==2) { [imageView setImageWithURL:[NSURL URLWithString:image2]]; } else if(num ==3) { [imageView setImageWithURL:[NSURL URLWithString:image3]]; } else if(num ==4) { [imageView setImageWithURL:[NSURL URLWithString:image1]]; } }