scrollView实现无限快速滑动

宇文曦
2023-12-01

利用UIscrollView,我们可以实现优美平滑的滑动,而不需要利用手势识别,自己去写。但经常使用的是能够实现无限的滑动。网上有大量利用UIScrollView实现无限的循环滑动,这里就不多说了,但是网上的方法优点是实现了UIScrollView的循环利用,没有浪费内存,但缺点是不能实现快速滑动。这里介绍一种快速滑动的实现方法。

UIScrollView的contentsize就像一块画布,因此,即使画布很大,它占用的内存也是很小的,而真正占用大量内存的是画布上的东西(待证明)。因此,我们不限制contentsize的大小,而只关注于画布上的东西的生成与释放,这已经能满足实际的大部分的运用。方法如下:

一、在scrollViewdidScroll方法中,由于只要在滑动,该方法就会被调用。在这个方法中,我们需要处理如下几件事:1.判断当前页是否已是第0页或者最末页(_index==0或_index==[_item count]-1),如果是,则固定scrollView的位置,不再滑动;2.如果计算出的滑动的位置页page加上需要缓存页数大于了contentsize,则需要再分配contentsize的大小;3.如果计算出的page页大于[_item count-1],令page=[_item count]-1,并将scrollView的位置固定在该page页,这样即防止了contentsize由于被无限的快速滑动而无限分配,也防止了由于page大于[_item count]-1,而导致后面的错误;4.在滑动时,应该在当前的page页如果没有内容的话,则显示加载动画。

二,在scrollViewdiddecelerate方法中,该方法是在滑动结束时调用。在这个方法中,我们需要处理如下几件事:1.判断如果是滑动到第0页或最后一页,则给出振动动画提示;2.计算滑动到的当前页page,将当前Paged页左右缓存相应的内容页,而将前一次显示页_index及周转的相应缓存页释放掉;3.将所有加载动画都移除;4._index=page。


这样,当前始终只有当前显示页左右的几个缓存内容对像。

 类似资料: