美文网首页
iOS两个imgaeView实现轮播图

iOS两个imgaeView实现轮播图

作者: 逆流丶而上 | 来源:发表于2016-07-28 17:51 被阅读168次

轮播图一般使用scrollView实现,好一点的话就设置三张图片,重用。

这里我另辟蹊径使用collectionView,让系统帮我们重用imageView。(系统只创建了两个cell!!!)

创建collectionView之类不再赘述。

imageArray 存放图片,isDragging 判断当前是否正在拖拽。

刷新数组时,把图片数组传过来。 假如有三张图片 也就是123 三张,这里把最后一个对象再添加到数组最前边,第一张图像添加到最后面,也就变成了31231,这里跟常规轮播图思路大致一致。

collectionView reloadData后,立刻向右偏移一个图片的宽度,也就是本来显示3这张图片,偏移到1图片。

然后开启timer。

在collectionView的代理方法didEndDisplayingCell方法中,判断当前滚动到第几个,如果滚动到第0个或者imageArray.count-1个cell的话,就立刻重新设置collectionView的contextOffSet。要注意的是imageArray是后来增加过对象的array,而不是传过来的。代码如下

下面是timer的方法

其中isDragging在scrollview的代理方法 beginDragging和didEndDragging中改变。为了更好的用户体验,在endDragging中,延迟执行了更改isDragging(为防止拖拽后,timer方法立刻执行)。

使用后发现轮播图页面,push后,timer会一直走,但是collectionView的didEndDisplayingCell方法不会再调用。所以添加了startTimer和endTimer两个方法。如下图

startTimer在viewWillAppear方法里边调用,endTimer在viewWillDisAppear方法里调用。

最后附上gitHub链接 gitHub链接

相关文章

网友评论

      本文标题:iOS两个imgaeView实现轮播图

      本文链接:https://www.haomeiwen.com/subject/uakjjttx.html