1. 程式人生 > >IOS開發:BannerView無限輪播的原理和使用

IOS開發:BannerView無限輪播的原理和使用

無限輪播的原理:

在圖片的陣列中額外插入兩個圖片,在陣列第一個元素前加一個圖片,和原陣列中最後一個圖片相同,在陣列最後一個元素後加圖片,和原陣列第一個圖片相同。

NSMutableArray *muArr = [NSMutableArray array];
        [muArr addObject: imageNameArray.lastObject];
        [muArr addObjectsFromArray:imageNameArray];
        [muArr addObject: imageNameArray.firstObject];

以數字代表圖片做例子:

原陣列 =  @[1,2,3,4,5];

現陣列 = @[5,1,2,3,4,5,1];

當ScrollView滾動到 現陣列 5(下標0)的位置的時候,讓ScrollView的偏移量直接移到 下一個5(下標5),

當ScrollView滾動到 現陣列 1(下標6)的位置的時候,讓ScrollView的偏移量直接移到 下一個1(下標1),

/*
     引數:滾動偏移量X值: scrollOffset
     滾動檢視: scrollView
     滾動檢視寬度: scrollFrameW
     現陣列: _imageNameArr
     */
    if (scrollOffset == 0)
        scrollView.contentOffset = CGPointMake(scrollFrameW* (_imageNameArr.count-2), 0);
    else if (scrollOffset == scrollFrameW* (_imageNameArr.count-1))
        scrollView.contentOffset = CGPointMake(scrollFrameW, 0);

Timer的定時器讓它定時重複執行指定程式碼從而完成自動滾動無限輪播的功能。

下面有我自己封裝的一個BannerView的Demo。

如果需要使用,需要提前匯入SDWebImage第三方

遵守下代理,用代理方法即可獲取輪播圖的點選方法,返回點選item的下標

使用案例:

 NSArray *imageNameArr = @[圖片1,圖片2,圖片3];
 DLBannerView *banner = [[DLBannerView alloc]initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 200) imageNameArray:imageNameArr timerWithtimeInterval:3.0];
 banner.delegate = self;
 [self.view addSubview:banner];

Demo下載連結: https://pan.baidu.com/s/1cdYR6Bx0Uv7bb7JKvoGbpg