ios之实现自动无限循环滚动视图(1)

本文介绍了如何在iOS中使用UIScrollView实现无限循环滚动视图,包括手动滑动时的无限循环、图片自动轮播、用户交互时的自动播放控制等功能。主要通过创建一个大于屏幕宽度的UIScrollView,利用偏移量更改实现循环效果。
摘要由CSDN通过智能技术生成

ios之实现自动无限循环滚动视图(1)

前言

ios实现无限循环滚动主要有两种办法,都利用了UIScrollView,第一种是创建一个很大的UIScrollView((n+2)*屏幕宽度),把要展示的图片都添加到这个视图上,通过对偏移值的更改达到循环的效果;第二种是创建一个三倍屏幕大小的UIScrollView,只使用三张图片,通过不断更新图片来达到循环的效果。

这两天把这两种方法都写了一次,今天只讲第一种。
附:第二种方法
ios之实现自动无限循环滚动视图(2)

效果展示

效果展示

功能

  • 实现用户左右滑动时可以无限循环滚动
  • 实现图片的自动轮播
  • 用户开始滑动时,自动轮播停止,用户无操作两秒后继续开始自动轮播

分析

本来一开始只打算写左右滑动时的无限滚动的(也没打算加pageControl),但是写着写着就把自动轮播也给写完了。按照我的思路分成四个部分来讲。

  • 用户左右滑动时的无限循环滚动

    原理:要实现左右滑动就是利用UIScrollView的特性,创建一个UIScrollView视图,将视图的可见宽度设为与屏幕同宽,并将视图设置为可分页,图片就可以一页页展示出来。那么该如何实现循环滚动呢?

    当我们需要展示n张图片时,视图的实际宽度要设置为(n+2)*屏幕宽度,因为需要在额外在最前一页放上第一张图片,最后一页放上第一张图片(如图所示)

    图例

    如图,当显示到要展示的图片4,并且要继续向右滑动时,逻辑上来说我们需要回到要展示的图片1,才能继续循环。但为了实现“向右滑动”的效果,需要额外在最后一页放上一张图片1,展示出向右滑的动画,再偷偷将UIScrollView的偏移量调整到要展示的图片1位置(不显示动画),营造出一种“一直在向右滑”的假象。

    代码如下:

    //当scrollView停止滚动之后调用此方法
    -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
        //计算偏移量所对应的页数
        int page = scrollView.contentOffset.x/KScreenWidth;
        //NSLog(@"%d",page);
    
        if (page == 0) {
            //此时应滚到最后一页
            //重新设置偏移量
            scrollView.contentOffset = CGPointMake(KScreenWidth*4, 0);
          
            //可以用这句代替上一句重新设置偏移量
            //可以将animated改成YES体验一下效果
            //[scrollView 
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值