使用3个imageview实现无线轮播的大致原理
- 将3个imageview添加到scrollview上面,scrollview的
contensize
是3个imageview的宽度
,设置scrollview一开始初始的偏移量为一个imageview宽度
,因为里面有3个UIImageView,所以scrollview默认显示的就是中间的那个imageview,并且关键就是让屏幕显示的始终就是中间的这个imagview - 使用3个
imageview
来回更换图片,并在每一次更换图片后立即再设置scrollview偏移量还为一个imagview的宽度,也就是让scrollview滚动后再滚回原来默认的位置,这样就可以达到始终显示中间那个imageview的效果 - 看到过其他博客里面有这样描述过这个原理
ps:例如要使用三个UIImageView循环显示5张图片
1)由于中间的imageview是显示在屏幕上的,它需要在启动时默认显示第1张图片,那么左边的imagview
自然就需要显示最后一张图片,右边的imagview自然要显示第二张图片了.所以一开始肯定默认放图片5、
图片1、图片2,当前显示中间的UIImageView,也就是图片1
2)如果用户手指向左滑动,那么就会显示图片2,当图片2显示完整后迅速重新设置左中右三个UIImageView
的内容为图片1、图片2、图片3,然后马上设置contentOffset再次为一开始默认的一个imageview宽度,
让它滚回默认一开始的位置,以此来达到一直显示的是中间的UIImageView的效果,此刻中间那个imagview
显示的也就是图片2
3)继续向左滑动看到图片3,当图片3滚动完成迅速重新设置3个UIImageView的内容为图片2、图片3、图片
4,然后通过设置contentOffset依然显示中间的那个UIImageView,此刻也就是图片3
5)当然,向右滑动原理完全一样,如此操作就给用户一种循环的错觉,而且图片多的话不占用过多内存 - 为此我做了一个动态图,以此来动态描述下这个原理
scroll.gif