前言###
想到做图片轮播图,我们常常就会想到使用UISCrollerView,而要无限循环的话我们在网上搜到的都是以下方法。
只要在图片前后各放一张图片即可(此时共有n+2个图片在UIScrollView中)。例如我们有5张图片,只要使用7个UIImageView依次存放:图片5,图片1,图片2,图片3,图片4,图片5,图片1。当从图片1滚动到图片5时由于最后一张是图片1就给用户一种无限循环的感觉,当这张图完全显示后我们迅速将UIScrollView的contentOffset设置到第二个UIImageView,也就是图片1,接着用户可以继续向后滚动。当然向前滚动原理完全一样,当滚动到第一张图片(图片5)就迅速设置UIScrollView的contentOffset显示第6张图(图片5)。
如果要优化性能的话就直接放三张图片够了,每次滚动完了,都更新图片和位置。
这里有篇挺详细的文章就是介绍上面这种方法的iOS开发系列--无限循环的图片浏览器。
但是有一个问题就是它是当UIScrollerView停止滚动的时候再去判断设置contentOffset的。
*-(void)scrollViewDidEndDecelerating:(UIScrollView )scrollView
当在UIScrollerView的最后一页手指没有移开并一直在滑动的时候是不会执行上面这个方法的,所以就会拉到最后一页无法实现循环。
如何实现最好###
这有个开源组件SDCycleScrollView,思路是使用UICollectionView,item个数可以设置为重复的无限个,因为cell都是复用的也不会产生性能问题。
网友评论