UIScrollView3个UIImageView无限循环

核心步骤

  • 在图片显示完全(endDecelerating)时,重新设置三个UIImageView的图片内容
  • 调整UIScrollView的偏移量,始终显示中间的UIImageView

如有图片1、2、3、4、5,默认存放图片5、1、2,显示中间图片1:

1. 向后滚动,显示图片2

2. 图片显示完全时,重新设置UIImageView中的图片为图片1、2、3

3. 设置UIScrollView的偏移量,使其显示中间的UIImageView,即图片2

4. 向后滚动,显示图片3

5. 图片显示完全时,重新设置UIImageView中的图片为图片2、3、4

6. 设置UIScrollView的偏移量,使其显示中间的UIImageView,即图片3

向前滚动同理。

如下图所示:

- 初始时显示图片1,然后向左滑动

  • 滑动完成时显示的是图片2

  • 在滑动完成时,修改UIImageView显示的内容如下图所示

  • 接着上一步,立即修改UIScrollView的偏移量,使其显示中间的UIImageView,即图片2

如上,最终结果显示的都是最中间的UIImageView,看起来像是无限个UIImageView一样

代码及演示图:

https://github.com/tripleCC/TPCPageScrollView.git

时间: 2024-12-22 21:10:38

UIScrollView3个UIImageView无限循环的相关文章

UIScrollView实现图片轮播器及其无限循环效果

图片轮播器: 一.实现效果 实现图片的自动轮播            二.实现代码 storyboard中布局 代码: 1 #import "YYViewController.h" 2 3 @interface YYViewController () <UIScrollViewDelegate> 4 @property (weak, nonatomic) IBOutlet UIScrollView *scrollview; 5 /** 6 * 页码 7 */ 8 @prop

无限循环滚动视图思路一

一.思路分析 不考虑内存 1.如果有5张图片,可以放7张UIImageView,排列是 4 0 1 2 3 4 0,但图片多时对内存太依赖. 优化内存 1.需要用3个UIImageView来实现即可. 初始状态 - 一开始,把contentoffset设置到中间的那张imageView上,也就是显示中间的imageView,并且以后每次滚动完都会进行这样的设置,这里先记住 - 图中显示的是第0张图片,所以向左滑动显示的肯定是最后一张图片,也就是第4张,同理,右滑是第1张 - 所以,三张image

IOS开发系列--无限循环的图片浏览器

--UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件都介绍一遍确实没有必要,所谓授人以鱼不如授人以渔,这里会尽可能让大家明白其中的原理,找一些典型的控件进行说明,这样一来大家就可以触类旁通.今天我们主要来看一下UIScrollView的内容: UIView UIScrollView 实战--图片浏览器 UIView 在熟悉UIScrollView之前

无限循环图片浏览器

1 UIScrollView无限滚动 2 3 #import "ViewController.h" 4 5 #define kCount 8 6 7 @interface ViewController () <UIScrollViewDelegate> 8 { 9     UIImageView *_reusableView; // 循环利用的 10     UIImageView *_centerView; // 中间的 11 } 12 @property (weak,

iOS无限循环滚动scrollview

经常有园友会问"博主,有没有图片无限滚动的Demo呀?", 正儿八经的图片滚动的Demo我这儿还真没有,今天呢就封装一个可以在项目中直接使用的图片轮播.没看过其他iOS图片无限轮播的代码,也不了解他们的原理,我今天封装这个图片无限轮播是借鉴Web前端中的做法,因为之前写Web前端的时候,实现幻灯片就是这么做的,今天就在iPhone上搞搞.下面的东西是自己写的了,关于轮播的东西这个开源项目也是相当不错的https://github.com/nicklockwood/iCarousel ,

renderer_outline_aa::line3()无限循环

情况一: 在该函数出现无限循环在如下两句代码: while(abs(sx - lp.x1) + abs(sy - lp.y1) > lp2.len){sx = (lp.x1 + sx) >> 1;sy = (lp.y1 + sy) >> 1;} 断点调试的时候,出现无限循环的结果是因为取值出现如下的问题: sx=0x3d00lp.x1=0x3d01sy=0x7a00lp.y1=0x7a01lp2.len=1 在这种情况下,sx和sy的值永远不变,并且循环的条件永远成立(whi

自定义 ViewGroup 支持无限循环翻页之三(响应回调事件)

大家如果喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处,再次感谢 ####################################################################### 自定义 ViewGroup 支持无限循环翻页系列 自定义 ViewGroup 支持无限循环翻页之一(重写 onLayout以及 dispatchDraw) 自定义 ViewGroup 支持无限循环翻页之二(处理触摸事件)

Ubuntu中输入startx并重启后登录界面无限循环问题

今天,在学习了编程两个多月后遇到的第一个菜鸟技术问题,解决后有一种兴奋和迷茫. 言归正传,说说遇到的问题和解决方案. 在Ubuntu14.04中,按照linux的传统做法(基于redhat),在root下输入了startx并enter,结果出现了一个没有任何图标的界面,没有任何命令可以输入,于是选择重启,那么问题来了. 重启后进入登录界面,但是正确输入密码后还是输入密码的无限循环,纠结...Google.百度后发现原来有好多菜鸟也有同样的问题,于是对此问题进行了探讨学习. 先说解决方案: (1)

(原创)c#学习笔记04--流程控制04--循环04--循环中断和无限循环

4.4.4  循环的中断 有时需要更精细地控制循环代码的处理.C#为此提供了4个命令,其中的3个已经在其他情形中介绍过了:?  break——立即终止循环.?  continue——立即终止当前的循环(继续执行下一次循环).?  goto——可以跳出循环,到已标记好的位置上(如果希望代码易于阅读和理解,最好不要使用该命令).?  return——跳出循环及其包含的函数(参见第6章).?  break命令可退出循环,继续执行循环后面的第一行代码 4.4.5  无限循环 可以通过编写错误代码或错误的