循环滚动视图的实现

效果图展示:

image
image

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


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

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

屏幕快照 2015-04-27 下午4.51.44.png

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

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

屏幕快照 2015-04-27 下午5.06.55.png

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

屏幕快照 2015-04-27 下午5.14.48.png

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容