IOS客户端中幻灯视图的无限滚动翻页方法及系统与流程

文档序号:11154390阅读:311来源:国知局
IOS客户端中幻灯视图的无限滚动翻页方法及系统与制造工艺

本发明涉及IOS客户端幻灯视图开发领域,具体涉及一种IOS客户端中幻灯视图的无限滚动翻页方法及系统。



背景技术:

现有的IOS客户端查阅幻灯视图时,只能水平或垂直滚动幻灯视图,以对幻灯视图进行翻页,该功能由UIScrollView(苹果开发工具提供的一个滚动视图控件)实现,当滚动幻灯视图至首尾边界或超出首尾边界时,幻灯视图会回弹至首尾边界。

随着用户的IOS客户端使用需求的提高,对IOS客户端提出了无限滚动翻页幻灯视图的功能(即从幻灯视图的首页滑动至尾页后,继续在相同方向上滑动时能够复位至首页的幻灯视图)。

目前,实现无限滚动翻页幻灯视图的方法为:采用UIScrollView(滚动视图控件)添加若干水平排列的子视图,例如视图A、B和C,视图排列顺序为A、B、C,开始用B视图作为显示视图,当向后滑动结束后手动将视图排列顺序调整为B、C、A,再分别计算滑动结束后A、B和C的偏移量,根据偏移量将C视图移动至屏幕上作为显示视图。

但是,上述实现无限滚动翻页幻灯视图的方法应用在IOS客户端时,存在以下缺陷:

(1)每次滑动后,均需要计算每幅子视图的偏移量,当子视图的数量较多时,计算大量子视图的偏移量会占用IOS客户端大量的内存,进而降低IOS客户端的工作效率。

(2)当支持呈现子视图的数据源发生变化需要重新加载时,会将所有子视图移除后,重新生成和所需的子视图、并添加至UIScrollView的视图层级中去。由于IOS客户端对视图层级的操作(主移除/添加子视图、改变视图的层级关系等)都是耗时操作,因此当UITableView(IOS客户端的简单列表视图控件)或UICollectionview(IOS客户端的容器列表视图控件)高频率的重新加载子视图(即高频率的移除/添加子视图)时,会严重影响IOS客户端的性能,进而降低用户体验。



技术实现要素:

针对现有技术中存在的缺陷,本发明解决的技术问题为:在占用IOS客户端少量内存的基础上,实现IOS客户端中幻灯视图的无限滚动翻页。本发明不需要大量创建和移除新的子视图,显著减少了不必要的计算和开销很大的视图层级操作。

为达到以上目的,本发明提供的IOS客户端中幻灯视图的无限滚动翻页方法,包括以下步骤:

步骤A:通过UIView创建容器视图,通过UICollectionView创建列表视图,将列表视图添加至容器视图中,转到步骤B;

步骤B:获取需要呈现的子视图的数据源,根据视图排列顺序对所有数据源进行排列,在第一个数据源之前添加与尾部数据源对应的缓冲数据,在最后一个数据源之后添加与首部数据源对应的缓冲数据,将添加缓冲数据后的所有数据源,按照所述排列顺序加载至步骤A中的列表视图中,转到步骤C;

步骤C:当滚动翻页至缓冲数据的子视图时,跳转至该缓冲数据对应的数据源的子视图。

在上述方案的基础上,步骤B中所述第一个数据源之前的缓冲数据为倒数第一个数据源,所述最后一个数据源之后的缓冲数据为正数第一个数据源。

在上述方案的基础上,步骤B中所述第一个数据源之前的缓冲数据为倒数第一个数据源和倒数第二个数据源,排列顺序为:倒数第一个数据源、倒数第二个数据源、第一个数据源;所述最后一个数据源之后的缓冲数据为正数第一个数据源和正数第二个数据源,排列顺序为:最后一个数据源、正数第一个数据源、正数第二个数据源。

在上述方案的基础上,步骤C具体包括以下步骤:设置每个缓冲数据与对应数据源的偏移量;当滚动翻页至缓冲数据的子视图时,根据该缓冲数据的偏移量,跳转至该缓冲数据对应的数据源的子视图。

在上述方案的基础上,步骤C之前还包括以下步骤:在IOS客户端的屏幕中,显示步骤B中所述的第一个数据源的子视图。

与现有技术相比,本发明的优点在于:

参见上述步骤B可知,本发明预先所有数据源的开头和结尾各设置了缓冲数据,与现有技术中无限滚动翻页时需要计算大量子视图的偏移量相比,本发明不需要计算每幅子视图的偏移量,当幻灯视图滚动翻页至缓冲数据的子视图时,能够直接跳转至缓冲数据对应的数据源的子视图,进而利用视觉差来实现无限滚动翻页。因此,本发明工作时占用IOS客户端的内存非常小,进而显著提高了IOS客户端的工作效率,提升了用户体验。

进一步,参见步骤A和C可知,本发明跳转至缓冲数据对应的数据源的子视图时,能够利用UICollectionView的重用机制,从已有的数据源中直接获取需跳转的数据源,进而获取子视图,因此不需要大量创建和移除新的子视图,显著减少了不必要的计算和开销很大的视图层级操作。

进一步,参见步骤B和C可知,本发明跳转至缓冲数据对应的数据源的子视图时,在内存上只有存在缓冲数据的额外开销,不会常驻大量内存,进一步降低了IOS客户端的内存占用。

附图说明

图1为本发明实施例中IOS客户端中幻灯视图的无限滚动翻页方法的流程图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

参见图1所示,本发明实施例中的IOS客户端中幻灯视图的无限滚动翻页方法,包括以下步骤:

S1:通过UIView(视图控件)创建容器视图,转到S2。

S2:通过UICollectionView创建列表视图,将列表视图添加至容器视图中,转到S3。

S3:获取需要呈现的子视图的数据源(每一个呈现出来的视图都需要数据来支持,如一张图片、一个图片链接等),根据视图排列顺序对所有数据源进行排列,例如需要呈现的子视图的所有数据源为7张图片数据,按视图排列顺序编号为1、2、3、4、5、6、7,转到S4。

S4:在第一个数据源之前添加与尾部数据源对应的缓冲数据,在最后一个数据源之后添加与首部数据源对应的缓冲数据,将添加缓冲数据后的所有数据源,按照S3中的视图排列顺序加载至S2中的列表视图中,转到S5。

S4中缓冲数据的添加方式为:一般前后各添加至少1个数据源(通常为正数第一个数据源和倒数第一个数据源)即可,为使滚动翻页效果更佳平顺,本实施例的S4中在前后各添加2个数据源:

第一个数据源之前的缓冲数据为2个,排列顺序为:倒数第一个数据源、倒数第二个数据源、第一个数据源;最后一个数据源之后的缓冲数据也为2个,排列顺序为:最后一个数据源、正数第一个数据源、正数第二个数据源;即在图片数据1添加图片数据6和7,在图片数据7之后添加图片数据1和2,添加后的所有数据源为6、7、1、2、3、4、5、6、7、1、2。

S4的原理为:因为UICollectionView在滚动翻页到最后/开头之后是无法继续滚动翻页的,所以为了使UICollectionView在滚动翻页到最后/开头部分之后还可以继续滚动翻页,需要其在滚动到最后/开头之后还有视图可以显示。与此同时,UICollectionView显示视图的数量是由其数据源决定的,因此可以先在数据源开头和结尾分别插入缓冲数据,然后在滚动翻页到缓冲数据时通过设置UICollectionView的偏移量来让其跳转至与开头或结尾的缓冲数据对应的数据源上,进而利用视觉差来实现无限滚动翻页。

S5:设置每个缓冲数据与对应数据源的偏移量,例如在6、7、1、2、3、4、5、6、7、1、2中,设置第一个6与第二个6的偏移量,转到S6。

S6:在IOS客户端的屏幕中,显示S4中所述的第一个数据源的子视图,当屏幕中的子视图被滚动翻页至缓冲数据的子视图时,根据该缓冲数据的偏移量,跳转至该缓冲数据对应的数据源的子视图。例如在6、7、1、2、3、4、5、6、7、1、2中,当滚动翻页子视图到第二个1时,会跳转至第一个1,进而实现无线滚动翻页的效果。

S6中跳转至缓冲数据对应的数据源的子视图时,能够利用UICollectionView的重用机制(维护了一个子视图的重用队列,当显示子视图时优先从重用队列中去获取,获取不到再创建新的子视图),从已有的数据源中直接获取需跳转的数据源,进而获取子视图,因此不需要大量创建和移除新的子视图,显著减少了不必要的计算和开销很大的视图层级操作。

本发明实施例中的IOS客户端中幻灯视图的无限滚动翻页系统,包括容器视图生成模块、数据源生成加载模块、幻灯视图显示模块和无限滚动翻页模块。

容器视图生成模块用于:通过UIView创建容器视图,通过UICollectionView创建列表视图,将列表视图添加至容器视图中,向数据源生成加载模块发送数据源生成加载信号。

数据源生成加载模块用于:收到数据源生成加载信号后,获取需要呈现的子视图的数据源,根据视图排列顺序对所有数据源进行排列,在第一个数据源之前添加与尾部数据源对应的缓冲数据,在最后一个数据源之后添加与首部数据源对应的缓冲数据,将添加缓冲数据后的所有数据源,按照所述排列顺序加载至容器视图生成模块中的列表视图中。

数据源生成加载模块在第一个数据源之前添加的缓冲数据可以为倒数第一个数据源,在最后一个数据源之后添加的缓冲数据可以为正数第一个数据源。

数据源生成加载模块在第一个数据源之前添加的缓冲数据还可以为倒数第一个数据源和倒数第二个数据源,排列顺序为:倒数第一个数据源、倒数第二个数据源、第一个数据源;在最后一个数据源之后添加的缓冲数据还可以为正数第一个数据源和正数第二个数据源,排列顺序为:最后一个数据源、正数第一个数据源、正数第二个数据源。

幻灯视图显示模块用于:在IOS客户端的屏幕中,显示数据源生成加载模块中所述的第一个数据源的子视图。

无限滚动翻页模块用于:设置每个缓冲数据与对应数据源的偏移量;当IOS客户端屏幕中显示的子视图被滚动翻页至缓冲数据的子视图时,根据该缓冲数据的偏移量,跳转至该缓冲数据对应的数据源的子视图。

进一步,本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1