下载链接:https://github.com/gsdios/SDCycleScrollView
SDCycleScrollView是一个很好用的无限循环自动图片轮播器,采用了UICollectionView的重用机制和循环滚动的方式来实现图片的无限轮播,只需要很少的代码就能实现很棒的轮播效果,没有使用UIScrollView时出现的从最后一页跳到第一页时的卡顿状态。
// 网络加载图片的轮播器
SDCycleScrollView *cycleScrollView = [cycleScrollViewWithFrame:frame delegate:delegate placeholderImage:placeholderImage];
cycleScrollView.imageURLStringsGroup = imagesURLStrings;
// 本地加载图片的轮播器
SDCycleScrollView *cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame: imagesGroup:图片数组];
在使用过程中,发现会出现轮播图卡在一半的问题,解决问题是在 viewWillAppear 方法中调用adjustWhenControllerViewWillAppera方法。设定无限循环
_cycleScrollView.infiniteLoop = YES;
_cycleScrollView.autoScrollTimeInterval = 4;//秒数
/** 解决viewWillAppear时出现时轮播图卡在一半的问题,在控制器viewWillAppear时调用此方法 */
- (void)adjustWhenControllerViewWillAppera;
layoutSubviews方法中有以下逻辑
if (self.infiniteLoop) {
targetIndex = _totalItemsCount * 0.5;//该处设定了初始加载时滚动的位置,如果图片个数是奇数,则会出现图片卡在一半的情况
}else{
targetIndex = 0;
}
[_mainView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:targetIndex inSection:0 atScrollPosition:UICollectionViewScrollPositionNone animated:NO];
在不修改源码的前提下,为了解决该问题,在初始设定时,将infiniteloop设为NO,加载完成后再将其设为YES。