您好,登錄后才能下訂單哦!
前言
對于banner輪播圖,相信大家都會經(jīng)常用到。自動循環(huán)播放的banner是很常見的UI組件。如何實現(xiàn)呢?下面就來給大家詳細(xì)介紹下,話不多說了,下面來一起學(xué)習(xí)學(xué)習(xí)吧。
1.實現(xiàn)思路
1.橫向滾動的banner。
2.自動循環(huán)播放banner。
3.特殊banner位的處理。
2.本文采用第二種:UICollectionView+UICollectionViewCell
關(guān)鍵代碼實現(xiàn)
2.1生成banner的特殊處理
- (void)setBannerList:(NSArray<KBannerItem *> *)bannerList { if (bannerList.count > 1) { NSMutableArray *itemList = [NSMutableArray arrayWithArray:bannerList]; [itemList insertObject:bannerList.lastObject atIndex:0]; [itemList addObject:bannerList.firstObject]; _bannerList = itemList; }else{ _bannerList = bannerList; } if (self.bannerList.count > 1) { self.bannerPageControl.numberOfPages = self.bannerList.count - 2; }else{ self.bannerPageControl.numberOfPages = 0; } self.noBannerImageView.hidden = self.bannerList.count > 0; self.bannerPageControl.currentPage = 0; [self.collectionView reloadData]; self.collectionView.contentOffset = CGPointMake(CGRectGetWidth(self.collectionView.frame), 0); }
2.2 banner自動循環(huán)播放觸發(fā)的事件
- (void)handleBannerChangeEvent:(id)sender { if (_bannerPageControl.numberOfPages <= 1) { return; } NSInteger page = _bannerPageControl.currentPage + 1; [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:page + 1 inSection:0] atScrollPosition:UICollectionViewScrollPositionRight animated:YES]; }
2.3開啟自動播放或關(guān)閉自動播放bannner。
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { self.countTimer.isOpen = NO; } - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { self.countTimer.isOpen = YES; }
2.4.滑動時的特殊處理。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (_bannerList.count <=1) { return; } CGFloat width = CGRectGetWidth(scrollView.frame); NSInteger currentPage = scrollView.contentOffset.x / width; if (currentPage == 0) { if (scrollView.contentOffset.x < 0) { [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:_bannerList.count - 2 inSection:0] atScrollPosition:UICollectionViewScrollPositionRight animated:NO]; self.bannerPageControl.currentPage = _bannerList.count - 2; }else{ [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0] atScrollPosition:UICollectionViewScrollPositionRight animated:NO]; self.bannerPageControl.currentPage = 0; } }else if (currentPage == _bannerList.count - 1) { self.bannerPageControl.currentPage = 0; [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0] atScrollPosition:UICollectionViewScrollPositionRight animated:NO]; }else{ self.bannerPageControl.currentPage = currentPage - 1; } }
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。