使用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)当然,向右滑动原理完全一样,如此操作就给用户一种循环的错觉,而且图片多的话不占用过多内存
  • 为此我做了一个动态图,以此来动态描述下这个原理
iOS 循环轮播框架思路-LMLPHP

scroll.gif
05-19 02:24