1. 程式人生 > >iOS UIScrollView 迴圈滾動(loop)

iOS UIScrollView 迴圈滾動(loop)

上週,公司讓把潮流資訊介面改成網易新聞那種迴圈滾動的。能力有限,改了一週時間,改到最後,自己也不是很滿意,交給無線產品去測試了,不知道能否滿意,呵呵。到最後是真的開始佩服網易新聞的程式設計師,和他們的差距還是很大的。

現在趁著有時間,把想法和思路做個標記。

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]];
    }
}