前言:
前期看過(guò)很多跑馬燈覺(jué)得都挺好的,用的最多的是第三方TXScrollLabelView琳状,可輪播文字,也可點(diǎn)擊跳轉(zhuǎn)相應(yīng)的頁(yè)面盒齿。但是就是不能手動(dòng)的翻頁(yè)念逞,我也搜過(guò),百度過(guò)边翁,查到了SDCycleScrollView(輪播圖一般用這個(gè))翎承,它可以改成手動(dòng)翻頁(yè)的但是巨麻煩,還得改里面的源碼符匾∵犊В回頭想了想,輪播輪播啊胶,廣播也相當(dāng)于是一個(gè)輪播圖甸各,只是體現(xiàn)形式變了。又查看了很多資料焰坪,一直有這個(gè)想法趣倾。也不知道弄的怎么樣,就拿collectionView封裝了一個(gè)可翻頁(yè)/可點(diǎn)擊/可自動(dòng)輪播的輪播圖某饰。
示例
核心代碼
我認(rèn)為最核心代碼就下面這個(gè) (定時(shí)器執(zhí)行的方法/分組 分了20組)- (void)beginUpdateUI { // 1儒恋、當(dāng)前正在展示的位置 NSIndexPath *currentIndexPath = [[self.collectionView indexPathsForVisibleItems] lastObject]; // 馬上顯示回最中間那組的數(shù)據(jù) (與當(dāng)前展示的位置一樣Row 組數(shù)不同) NSIndexPath *resetCurrentIndexPath = [NSIndexPath indexPathForItem:currentIndexPath.item inSection:0.5 * scrollMaxSections]; [self.collectionView scrollToItemAtIndexPath:resetCurrentIndexPath atScrollPosition:UICollectionViewScrollPositionBottom animated:NO]; // 2黔漂、計(jì)算出下一個(gè)需要展示的位置 NSInteger nextItem = resetCurrentIndexPath.item + 1; NSInteger nextSection = resetCurrentIndexPath.section; // 如果是當(dāng)前組最后一行把下一行的item序號(hào)置于0 (第一個(gè)) if (nextItem == self.muBroadcastData.count) { nextItem = 0; nextSection++; } NSIndexPath *nextIndexPath = [NSIndexPath indexPathForItem:nextItem inSection:nextSection]; // NSLog(@"next:%lu", nextIndexPath.row); // 3诫尽、通過(guò)動(dòng)畫滾動(dòng)到下一個(gè)位置 [self.collectionView scrollToItemAtIndexPath:nextIndexPath atScrollPosition:UICollectionViewScrollPositionBottom animated:YES]; } 。炬守。牧嫉。
【備注:】在這里留下點(diǎn)痕跡,有需求的可以下載减途,有意見(jiàn)的可以提出酣藻。
方便以后項(xiàng)目有類似的需求。
點(diǎn)我下載??