这篇文章主要介绍iOS如何实现UIScrollView的无限轮播功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<强> UIScrollView控件是什么? 强>
(1)移动设备的屏幕?大?小是极其有限的,因此直接展?示在?用户眼前的内容也相当有限
(2)当展?示的内容较多,超出?一个屏幕时,?用户可通过滚动?手势来查看屏幕以外的内容
(3)普通的UIView不具备滚动功能,不能显?示过多的内容
(4) UIScrollView是一个能够滚动的视图控件,可以?用来展?示?大量的内容,并且可以通过滚动查看所有的内容
,(5)举例:手机上的“设置”,其他吗?示例程序
而说到UIScrollView,大家最先想到的肯定就是它上面的无限轮播功能。苹果在UIScrollView上并没有提供相应的方法让大家实现轮播,所以就需要通过代码进行处理来实现。
<强>先上图强>
///,分页滑动 时间=_scrollView.scrollEnabled 是的,
它方便的帮助我们实现了轮播的效果,然后就需要我们来实现“无限的“轮播。接下来,我们就需要摆放图片了,在摆放图片时需要注意,我们需要在第一张图片的位置摆放最后一张图片(可能有点懵哈,不过不要着急慢慢往下看),然后我们依次摆放图片(从第一张到最后一张),最后在所有图片的尾部我们再放上第一张图片。这样我们就多放了两张图片(分别在首尾多放了一张图)。我把对应的方法写一下:
///,将图片放置在UIScrollView上 - (void) setupImage { ,///在UIScrollView的最前面添加一张图片 ,UIImageView * firstImageView =, [[UIImageView alloc], initWithFrame: CGRectMake (0, 0, kScreenWidth,, self.scrollView.frame.size.height)]; ,///图片名是最后一张图片=,firstImageView.image [UIImage imageNamed self.imageNameList.lastObject):; ,[self.scrollView addSubview firstImageView):; , ,///添加图片 ,for (NSInteger index =, 0;, index & lt;, self.imageNameList.count;, index + +), { ,///UIScrollView上的每一张图片 ,UIImageView * imageView =, [[UIImageView alloc], initWithFrame: CGRectMake((时间+ index 1), *, kScreenWidth,, 0,, kScreenWidth,, self.scrollView.frame.size.height)];=,imageView.image [UIImage imageNamed: self.imageNameList[指数]]; , ,(self.scrollView addSubview: imageView);=,,self.scrollView.contentSize  CGSizeMake((时间+ index 2), *, self.scrollView.bounds.size.width,, 0); ,} , ,///在UIScrollView的最后面添加一张图片 ,UIImageView * lastImageView =, [[UIImageView alloc], initWithFrame: CGRectMake((时间+ self.imageNameList.count 1), *, kScreenWidth,, 0,, kScreenWidth,, self.scrollView.frame.size.height)]; ,///图片名是第一张图片=,lastImageView.image [UIImage imageNamed self.imageNameList.firstObject):; ,[self.scrollView addSubview lastImageView):; , ,///设置UIScrollView的偏移量=,,self.scrollView.contentSize  CGSizeMake((时间+ self.imageNameList.count 2), *, self.scrollView.bounds.size.width,, 0); , ,///设置UIScrollView的起始偏移距离(将第一张图片跳过)=,,self.scrollView.contentOffset  CGPointMake (kScreenWidth, 0); , ,///图片总数=,,self.pageControl.numberOfPages  self.imageNameList.count;=,self.pageControl.currentPage 0; }
其实,如果大家看到这里,应该就会大致明白无线轮播的实现原理了。接下来就是最后一步,在UIScrollView的代理方法里面写逻辑:判断UIScrollView的偏移量,当其滑动到首位时(显示的是最后一张图片),滑动停止,就把偏移量修改最后面图片的位置上(倒数第二张)。同理,当UIScrollView滑动到最后时(显示的是第一张图片),滑动停止,就把偏移量修改到第一张图片的位置上(正数第二张)。
# pragma mark 作用;UIScrollViewDelegate - (void) scrollViewDidEndDecelerating:(UIScrollView *) scrollView { ,///当UIScrollView滑动到第一位停止时,将UIScrollView的偏移位置改变 ,if (scrollView.contentOffset.x ==, 0), {=,,scrollView.contentOffset  CGPointMake (self.imageNameList.count *, kScreenWidth,, 0);=,,self.pageControl.currentPage  self.imageNameList.count; ,///当UIScrollView滑动到最后一位停止时,将UIScrollView的偏移位置改变 ,}else if (scrollView.contentOffset.x ==, (self.imageNameList.count +, - 1) *, kScreenWidth), {=,,scrollView.contentOffset  CGPointMake (kScreenWidth, 0);=,self.pageControl.currentPage 0; ,}else {=,,self.pageControl.currentPage  scrollView.contentOffset.x /, kScreenWidth 作用;1; ,} }iOS如何实现UIScrollView的无限轮播功能