循环滚动视图的实现

效果图展示:

image

在众多的APP中都会有这样一种视图,去展示重点推荐,热门资讯等内容。
在实现的过程中,尝试了几种不同的实现方式:


1,直接在UIScrollView上添加UIImageView子视图:
这种方式可以实现滚动视图,但是在到达UIScrollView的末端的时候就无法循环了。

2,在UIScrollView的开头和结尾分别多添加一个子视图,代表最后一个子视图和第一个子视图。如下图的“4” “1”

循环滚动视图的实现_第1张图片
屏幕快照 2015-04-27 下午4.51.44.png

在每次滚动到最后一个子视图的时候,再往后滚动的同时 setContentOffset到真正的第一个子视图,或者在滚动到第一个子视图的时候,在往前滚动的同时 setContentOffset到真正的最后一个子视图。如果这样子实现,在用手指左右滑动的时候,是没有的问题的。但是,如果设置定时器,进行自动循环展示的时候,就会出现从最后一个视图跳转到第一个视图时的动画错误。

3,在UIScrollView上只添加三个子视图,分别代表当前展示的视图,当前视图的前一个视图,当前视图的后面一个视图,称之为contentViews

循环滚动视图的实现_第2张图片
屏幕快照 2015-04-27 下午5.06.55.png

在实现的时候,每次UIScrollView滚动的同时 contentViews中的视图随着变换,就可以实现无限循环的效果。

循环滚动视图的实现_第3张图片
屏幕快照 2015-04-27 下午5.14.48.png

这样实现之后动画就会是连贯的,如本文开始展示的动画效果。
但是现在实现的代码还有缺陷,就是无法处理少于3个子视图的情况。

第三种方法实现的开源代码地址在:WFLoopShowView

你可能感兴趣的:(循环滚动视图的实现)