IOS性能实现水平自动无缝循环LoopView(ScrollView)

ios之实现自动无限循环滚动视图(2)(三张图实现) 三个视图实现自动无限循环滚动的轮播图 阅读详情

说明

经常会在app中用到网页上的横向自动滚动的广告效果,从第一张图片显示到最后一张,然后又接着从第一张开始。

在网上找了很多地方,但是没有找到合适的,不是有bug就是没有实现更好的无缝循环的效果,或者动画被去掉以实现顺序效果。

所以,自己研究了下,设计了一个比较不错的方案吧。

设计

1.接口简单

只需要传入image的数组即可,数组个数3以上,无上限。因为2张图片构不成良好的广告效果,一般都是好几张图片,3-10.

2.设计思路

使用UIView做主view,UIScrollView做主要滑动view,UIPageControl作为页计数效果,使用NSTimer来实现自动滚动。

我们使用UIView作为底view,宽度设置成320,一般就这么宽,高度随意。

然后再view上加个3*320的scrollview,scrollview上面add3个UIImageView---leftImageView,centerImageView,rightImageView。

原则是间接一直显示centerImageView。

当初始化的时候,传进来的image数组,先进行排序,将数组最后一个元素count-1移到0角标位置,将原来的0至count-2往后偏移一个位置,即 0 - 1, 1 - 2等。

图片显示顺序 0,1,2.....count-1   变为  count-1,0,1,2....count-2

然后在事先创建好的3个imageview上加上新image数组的第0,1,2图片,(当前图片顺序实际上是,0 对应数组最后一个图片,1对应数组第一个图片,2对应数组第二个图片)。

然后重新定位,将scrollview偏移 contentoffset = CGPoint(width,0),即显示3个imageview的centerimageview。实现了初始化的时候显示原image数组的第一个图片。

这样,在往左去的时候可显示出顺序最后一个图片,往右去可显示第二个图片。

leftimageview   centerimageview   rightimageview

count-1的图片  第一个图片              第二个图片

新数组的0坐标 新数组的1坐标 新数组的2坐标

当scrollview滑动结束,调用回调方法响应,scrollviewDidEndDecelerating方法。

这时候,如果往右去,会到scrollview的rightimageview的位置了,同时显示第二张图片。我们现在要做的就是创建视觉差。

首先,需要将scrollview的contentoffset还原到centerimageview的位置,即(width,0)。

同时,替换数组中显示图片的位置以及哪三张显示。


ok,需要将scrollview的偏移时候的动画去掉,这样就实现了人眼看不出来的变换。

需要注意的是,对于需要显示哪三张图片,得根据个数和求模运算来做。往左往右就是currentIndex -- 或者++ 的问题了。

自动滚动就是再加个timer了。

pageControll的currentpage也随currentIndex变化即可,详见代码。

代码写的一般,如有问题,稍微改动吧,贡献给大家了。

http://download.youkuaiyun.com/detail/love_monkey/7571799

Android View 滚轮控件LoopView+自定义Dialog [时间地域选择器] Picker 发现了一些好的东西: 曾经找到过 WheelView。当时江湖救急,直接用了。数据源太大的话会导致性能降低。 当时有吐槽如果有使用自定义view或者继承ListView、RecyclerView的就好。 今日找到了使用自定义view方法写的。 红色为源码, 蓝色为哥写的对应扩展。 核心源码为LoopView,本来想看看实现原理方法,奈何源码被下了毒。 不过值得庆幸的是核心api还在 最后代码在 dialog-picker中,大家可以进行自己的定制哦,UI 逻辑什么的 阅读详情

相关推荐

iOS端无限滚动视图的循环ScrollDemo实现

本文还有配套的精品资源,点击获取 简介:在iOS应用开发中,UIScrollView和UIPageControl是创建可滚动内容的基本组件。通过本示例项目,我们将学习如何结合这两个组件实现一个内容循环滚动的效果。首先介绍UIScrollView的基本用法,然后探讨如何实现循环播放,以及如何通过懒加载策略优化内存使用。接着,我们会详细讨论如何处理滚动和页面切换事件,以实现无缝...

weixin_42577735的博客 1558

LoopView:一款创新的Android滚动视图库

LoopView:一款创新的Android滚动视图库 是一个由开发者zhuxiujia贡献的Android开源项目,它为开发者提供了一种简单、高效的方式来实现无限循环滚动的效果,尤其适用于轮播图、标签页等场景。 项目简介 LoopView是一个自定义视图组件,设计思路源于对Android原生ViewPager的功能扩展。与原生组件不同的是,LoopView能够无缝地在数据集的第一项和最后一项之间切...

gitblog_00084的博客 590

Android-LoopView:自定义无限轮转控件

Android的Loop View Android LoopView是用于无限旋转图片的强大小部件,它提供了一些配置选项并很好地控制了外观和操作要求。 简单用法图片: 自定义布局用法图片: 在应用程序中使用LoopView 如果使用Gradle进行构建,只需build.gradle添加到build.gradle文件的dependencies部分: 支持 implementation 'com.kevin:loopview:1.5.6' 安卓X implementation 'com.kevin:loopview:2.0.1' 简单用法 在layout.xml中配置为View 要将LoopView添加到您的应用程序, <com.kevin.loopview.BannerView在布局XML中指定<com.kevin.loopview.BannerView 。 <com.kev

android自定义浮动菜单,android 自定义LoopView实现循环菜单

一、可行性分析LoopView是常见的循环View,一般应用于循环展示菜单项目,本次实现的是一组循环菜单,按照垂直方向,实际上,如果把某些变量互换,可以实现轮播图效果。二、效果展示 三、代码实现public class LoopView extends View {private static final int MAX_VISIBLE_COUNT = 5;private TextPaint mT...

weixin_39687468的博客 466

使用loopviewpager打造banner图轮播,带圆点滚动

实际项目中我们经常用到baner图的轮播,那么今天就给大家看下从我们项目里抽离出来的这个轮播图,供大家参考使用。

LoopView 实现 年月日三级联动,根据年月日计算生日

通过LoopView实现年月日选择,效果比WheelView好,可以计算年龄。

使用loopView实现滚动单选控件

使用loopView实现滚动单选控件

芒果蜜桃π 5653

ios-广告条上下无限循环滚动(UIButton).zip

简单易操作,不多说

LoopView-循环轮播控件

这次我们来学习一下日常看到的广告轮播器,几乎每个App中都拥有这样的控件。这种使用频繁的控件,我们应该懂得它们的实现原理,这样我们在使用的工程中就能更加熟练与轻松。先来看下效果吧。 效果图 原理 其实这个控件的实现本质就是一个ViewPager,相信大家对ViewPager不会很陌生,例如ViewPager+Fragment实现新闻的...

weixin_33912445的博客 264

ios-iOS 无限循环滚动视图.zip

iOS 无限循环滚动视图

iOS实现无限循环滚动的TableView实战教程

主要给大家介绍了关于iOS实现无限循环滚动的TableView的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

开源项目LoopViewDemo常见问题解决方案

开源项目LoopViewDemo常见问题解决方案 1. 项目基础介绍与主要编程语言 项目名称: LoopViewDemo 项目简介: LoopViewDemo 是一个开源的APP无限轮播图实现项目,适用于Android平台,可以帮助开发者快速实现应用中的图片轮播功能。 主要编程语言: Java 2. 新手使用时需注意的问题及解决步骤 问题一:项目依赖配置 问题描述: 新手在导入项目时可能会遇到项目...

gitblog_01106的博客 345

Creo报错代码-9?手把手教你重新生成许可证文件(基于Creo 10.0)

本文详细解析Creo报错代码-9的成因及解决方案,重点介绍如何重新生成许可证文件以应对网络环境变化导致的验证失败。通过分步指南和高级技巧,帮助用户有效管理多网络环境下的Creo许可证问题,提升工作效率。

weixin_30839881的博客 563

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

ios之实现自动无限循环滚动视图(1) 前言 效果展示 功能 分析 全部代码 前言 ios实现无限循环滚动主要有两种办法,都利用了UIScrollView,第一种是创建一个很大的UIScrollView((n+2)*屏幕宽度),把要展示的图片都添加到这个视图上,通过对偏移值的更改达到循环的效果;第二种是创建一个三倍屏幕大小的UIScrollView,只使用三张图片,通过不断更新图片来达到循环的效果。 这两天把这两种方法都写了一次,今天只讲第一种。 效果展示 功能 实现用户左右滑动时可以无限循环滚

u013712343的博客 2475

在Ubuntu 22.04 LTS上搞定Intel Quartus Prime 22.1和QuestaSim:一份保姆级的安装与License配置指南

本文提供在Ubuntu 22.04 LTS上安装和配置Intel Quartus Prime 22.1与QuestaSim的详细指南。涵盖依赖安装、环境变量设置、License配置及常见问题解决,帮助FPGA开发者快速搭建稳定的开发环境。特别针对Ubuntu系统优化,确保工具链高效运行。

weixin_29208077的博客 318

威纶通触摸屏与S7-1200以太网通信的具体方法和步骤(非常详细)

威纶通触摸屏与S7-1200以太网通信的具体方法和步骤(非常详细)

Robot_PLC_HMI_Automation 1万+

推荐一款优雅的iOS线性进度条库 —— Linear Progress Bar

推荐一款优雅的iOS线性进度条库 —— Linear Progress Bar 在移动应用开发中,进度条是不可或缺的一部分,它能向用户展示操作状态,增加用户体验的透明度。今天,我要为大家推荐一个基于Swift 4.0实现,且深受Material Design启发的iOS线性进度条库——Linear Progress Bar。 项目介绍 Linear Progress Bar是一款简洁、易用、功能强...

gitblog_00042的博客 633

支付宝h5参数如何实现跳转?(包含相关Demo代码)

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 3250

环形轮播组件 - CAROUSEL:优雅的iOS滚动视图

环形轮播组件 - CAROUSEL:优雅的iOS滚动视图 项目地址:https://gitcode.com/gh_mirrors/ci/circular-carousel 如果你正在寻找一种能够吸引用户注意力、展示信息的创新方式,那么这个名为"CAROUSEL"的开源项目绝对值得你的关注。由Ramotion公司开发,它是一个强大的iOS滚动视图库,让你可以在水平方向上以圆环形式...

gitblog_00040的博客 652

高通平台Android 无线 UWB 开发全解析:UWB系统设计、天线与校准全流程指南

为使 UWB 系统达到目标性能,在整个开发流程中遵循一套设计最佳实践至关重要。系统架构:需基于飞行时间(ToF)功能的基准方案(POR)定义系统框图,这是整体系统架构的基础。天线布局:天线位置对性能影响极大,需尽可能贴近 UWB 芯片,以减少信号损耗、保持高传输效率。器件选型:需谨慎选择元器件,推荐使用单刀双掷(SPDT)或双刀双掷(DPDT)开关、UWB 带通滤波器射频同轴测试接头,以保障信号传输路径与测试能力。原理图优化:原理图开发阶段,走线损耗优化极为关键。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 171

化工设备应力分析软件:STAAD.Pro二次开发_(24).非线性分析技术

在STAAD.Pro 中,可以通过命令。

kkchenjj的博客 662

IOS CollectionView 线性布局

线性布局,可以实现左右滑动,并在滑动的时候改变显示的大小。 具体包含以下几个类: 1、UIView 的扩展类目:UIView+ChangeFrameValue.h UIView+ChangeFrameValue.m2、UICollectionViewFlowLayout 子类LineFlowLayout.h LineFlowLayout.m3、UICollectionViewCell 子类MyC

homework的博客 565

一般无穷积分的收敛判别法

文章目录积分里的狄屎判别法证明阿贝尔判别法总结补充:级数中的狄屎和Abel 积分里的狄屎判别法 F(u)=∫auf(x)dx在[a,+∞)F(u)=\int_a^uf(x)dx在[a,+\infty)F(u)=∫au​f(x)dx在[a,+∞)有界 x→+∞时,g(x)单减→0x\to+\infty时,g(x)单减\rightarrow0x→+∞时,g(x)单减→0 ⇒\Rightarrow⇒ ...

universe_1207的博客 1万+

Android 开源组件 ----- Android LoopView无限自动轮转控件

一、组件介绍   App产品中信息列表头部都会有自动轮转的广告图片,使用ViewPager可以实现但编码比较麻烦,我们可以采用使用LoopView开源控件来完成, LoopView是一个强大的轮转大图控件,并且提供了许多配置方法足以满足你的应用需求 二、环境配置   如果您的项目使用 Gradle 构建, 只需要在您的build.gradle文...

weixin_34067980的博客 324

SAP 52策略测试简介

我们看下下层物料的需求,可以看到物料的需求已经跑出来了,我们双击计划订单,发现是没有办法将计划订单转换为采购申请的,这里是否还记得我们在前面创建主数据的时候独立集中我们填写的是1,所以物料继承了上层物料的策略,所以不能将计划订单进行转换。我们在前面测试了50策略按单生产,创建完计划独立需求后,通过主数据中的独立集中的字段控制下层物料是否能通过计划订单转成生产订单和采购订单。可以看到下层物料的计划订单就可以转采购申请了,到这里可以看到52策略和50策略的计划独立需求完全是一样的。

我小时候很黑的博客 1272

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

iOS开发-实现上下翻转轮播循环信息播报效果

定义的数据的数组及cell协议DFAppMainPageCastContentDataSource和DFAppMainPageCastContentDelegate外部实现DFAppMainPageCastContentDataSource和DFAppMainPageCastContentDelegate,可以设置自定义UITableViewCell与展示数据。设置item数据源@return 数据源/**数据源指定的子控件@param indexPath 索引@return 子控件。

一名开发者 1033

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: ios设备型号列表
下一篇: IOS的CoreData
夜空繁星-海
博客等级 码龄14年 17粉丝 62原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值