IOS中展示不等高列表的方法、存储介质、设备及系统与流程

文档序号:16530078发布日期:2019-01-05 10:40阅读:183来源:国知局
本发明涉及移动端应用开发
技术领域
:,具体来讲是一种ios中展示不等高列表的方法、存储介质、设备及系统。
背景技术
::随着移动互联技术的快速发展,移动终端设备(例如手机、平板电脑等)已日益普及,并且移动终端设备提供的功能也越来越多。通常情况下,用户可以自由地在移动终端设备上根据需要安装各种各样的app(application,应用程序),例如用户可以在手机上安装直播应用来观看在线直播。实际应用时,移动终端app应用中的列表很常见,例如ios系统的移动终端app应用中就会经常使用列表来展示各种数据。但是,在ios系统中一般是使用苹果自带的列表控件,而ios系统自带的列表控件只能展示等高的列表,无法做到不等高的列表展示。而随着用户对app界面效果的要求越来越高,等高列表的展示已无法满足用户的需求。为了解决上述问题,目前有一些开源的不等高框架使用到ios系统项目中。虽然实现了不等高列表的展示,但是需要将第三方框架导入到ios系统项目中,而第三方框架通常包含几千行代码甚至上万行代码,这种为了实现一个小功能为项目额外添加几千行上万行代码的方式无疑实用性不高,并且额外添加的几千行上万行代码不但会增加项目的复杂度而且还会引入许多程序bug(漏洞)问题。技术实现要素:本发明的目的是为了克服上述
背景技术
:的不足,提供一种控件呈现方法、存储介质、设备及系统,既能实现不等高列表展示的需求,又无需额外添加太多代码,简单易用、实用性高。为达到以上目的,本发明采取的技术方案是:提供一种ios中展示不等高列表的方法,该方法包括以下步骤:s1、创建列表控制器,该列表控制器继承于ios系统自带的视图控制器;为该列表控制器添加实现列表功能的数据源方法,所述数据源方法遵循ios系统的数据源方法,且所述数据源方法包括列表组数获取方法、列表行数获取方法、列表行内容创建方法以及列表行高度计算方法;s2、为所述列表控制器定义数组,该数组用来存储待展示的列表中的数据;s3、定义列表的视图属性为列表视图后,创建列表视图,并对该列表视图的坐标值、数据源以及列表代理进行设置;s4、通过调用列表控制器中的列表组数获取方法,实现列表视图中列表组数的获取;s5、通过调用列表控制器中的列表行数获取方法,实现各列表中列表行数的获取;s6、通过调用列表控制器中的列表行内容创建方法,实现各列表中每行内容的创建;s7、通过调用列表控制器中的列表行高度计算方法,实现各列表中每行高度的计算;将各列表中计算出的每行高度相加,得到各列表的实际高度;s8、根据列表组数、各列表中列表行数、各列表中每行的内容,将各列表按照计算出的实际高度在列表视图中进行展示。在上述技术方案的基础上,步骤s3具体包括以下流程:s301、定义列表的视图属性为列表视图后,使用列表视图创建函数创建一个列表视图;s302、为创建的列表视图设置坐标值,将坐标值设置为列表控制器的坐标值;s303、为创建的列表视图设置数据源,将数据源设置为列表控制器的数组;s304、为创建的列表视图设置列表代理,将列表代理设置为列表控制器。在上述技术方案的基础上,步骤s6具体包括以下流程:s601、通过调用列表控制器中的列表行内容创建方法,按顺序从列表视图中出列一个列表中的一个列表行,转入步骤s602;s602、判断出列的列表行是否为空,若是,转入步骤s603,否则,转入步骤s604;s603、使用内存分配函数为该列表行分配内存,使用显示样式设置函数为该列表行设置显示样式;并为该列表行添加重用标示,转入步骤s604;s604、获取当前出列的列表行的索引路径属性;根据该索引路径属性在列表控制器的数组中获取到对应的数据,该数据为模型数据,转入步骤s605;s605、通过模型数据赋值函数将获取到的数据填充至当前出列的列表行中,作为该列表行的显示内容,转入步骤s606;s606、重复步骤s601~s605,直至各列表中的每行内容均创建完成。在上述技术方案的基础上,步骤s7中,通过调用列表控制器中的列表行高度计算方法,实现各列表中每行高度的计算的具体流程为:1)按顺序获取一个列表中的一个列表行所对应的索引路径属性;根据该索引路径属性在列表控制器的数组中获取到对应的数据,该数据为模型数据;2)根据获取到的数据,利用高度计算函数计算出对应列表行的实际高度;3)重复步骤1)~2),直至各列表中每行高度均计算完成。本发明还提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述ios中展示不等高列表的方法的步骤。本发明还提供一种ios中展示不等高列表的设备,包括存储器、处理器及存储在存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述ios中展示不等高列表的方法的步骤。本发明还提供一种ios中展示不等高列表的系统,该系统包括列表控制器创建模块、列表控制器数组定义模块、列表视图创建模块、列表组数获取模块、列表行数获取模块、列表行内容创建模块、列表行高度计算模块和列表展示模块;所述列表控制器创建模块用于:创建列表控制器,该列表控制器继承于ios系统自带的视图控制器;为该列表控制器添加实现列表功能的数据源方法,所述数据源方法遵循ios系统的数据源方法,且所述数据源方法包括列表组数获取方法、列表行数获取方法、列表行内容创建方法以及列表行高度计算方法;所述列表控制器数组定义模块用于:为列表控制器定义数组,该数组用来存储待展示的列表中的数据;所述列表视图创建模块用于:定义列表的视图属性为列表视图后,创建列表视图;并对该列表视图的坐标值、数据源以及列表代理进行设置;所述列表组数获取模块用于:通过调用列表控制器中的列表组数获取方法,实现列表视图中列表组数的获取;所述列表行数获取模块用于:通过调用列表控制器中的列表行数获取方法,实现各列表中列表行数的获取;所述列表行内容创建模块用于:通过调用列表控制器中的列表行内容创建方法,实现各列表中每行内容的创建;所述列表行高度计算模块用于:通过调用列表控制器中的列表行高度计算方法,实现各列表中每行高度的计算;将各列表中计算出的每行高度相加,得到各列表的实际高度;所述列表展示模块用于:根据列表组数、各列表中列表行数、各列表中每行的内容,将各列表按照计算出的实际高度在列表视图中进行展示。在上述技术方案的基础上,所述列表视图创建模块创建并设置列表视图的具体流程为:定义列表的视图属性为列表视图后,使用列表视图创建函数创建一个列表视图;为创建的列表视图设置坐标值,将坐标值设置为列表控制器的坐标值;为创建的列表视图设置数据源,将数据源设置为列表控制器的数组;为创建的列表视图设置列表代理,将列表代理设置为列表控制器。在上述技术方案的基础上,所述列表行内容创建模块包括列表行出列子模块、列表行判断子模块、列表行创建子模块、数据获取子模块、数据填充子模块和处理判断子模块;所述列表行出列子模块用于:收到出列信号后,通过调用列表控制器中的列表行内容创建方法,按顺序从列表视图中出列一个列表中的一个列表行,向列表行判断子模块发送列表行判断信号;所述列表行判断子模块用于:收到列表行判断信号后,通过调用列表控制器中的列表行内容创建方法,判断出列的列表行是否为空,若是,向列表行创建子模块发送创建信号,否则,向数据获取子模块发送数据获取信号;所述列表行创建子模块用于:收到判断信号后,通过调用列表控制器中的列表行内容创建方法,使用内存分配函数为该列表行分配内存,使用显示样式设置函数为该列表行设置显示样式;并为该列表行添加重用标示,向数据获取子模块发送数据获取信号;所述数据获取子模块用于:收到数据获取信号后,通过调用列表控制器中的列表行内容创建方法,获取当前出列的列表行的索引路径属性;根据该索引路径属性在列表控制器的数组中获取到对应的数据,该数据为模型数据;向数据填充子模块发送数据填充信号;所述数据填充子模块用于:收到数据填充信号后,通过调用列表控制器中的列表行内容创建方法,使用模型数据赋值函数将获取到的数据填充至当前出列的列表行中,作为该列表行的显示内容;向处理判断子模块发送处理判断信号;所述处理判断子模块用于:收到处理判断信号后,通过调用列表控制器中的列表行内容创建方法,判断各列表中的每行内容是否均创建完成,若是,结束操作;否则,向列表行出列子模块发送出列信号。在上述技术方案的基础上,所述列表行高度计算模块通过调用列表控制器中的列表行高度计算方法,实现各列表中每行高度的计算的具体流程为:按顺序获取一个列表中的一个列表行所对应的索引路径属性,根据该索引路径属性在列表控制器的数组中获取到对应的数据,该数据为模型数据;根据获取到的数据,利用高度计算函数计算出对应列表行的实际高度;重复上述操作,直至各列表中每行高度均计算完成。本发明的有益效果在于:本发明中,会根据列表中每一行中显示的具体内容计算出列表中每一行实际的准确高度。由于每个列表行显示的内容不一样,计算出的列表行的实际高度也就不同,相加得到的各列表的高度也就不同,因此,当按照计算出的实际高度进行展示时就可以实现不等高的列表,从而满足不等高列表展示的需求。并且,利用本发明的方法实现不等高列表的展示时,是通过创建的列表控制器的各种数据源方法来实现的。该列表控制器继承于ios系统自带的视图控制器,且列表控制器的各种数据源方法均遵循ios系统的数据源方法,因此,无需将第三方框架导入到ios系统项目中,也无需额外添加过多代码,避免了增加项目的复杂度以及引入程序bug的问题。附图说明图1为本发明实施例中ios中展示不等高列表的方法的流程图;图2为本发明实施例中ios中展示不等高列表的设备的结构示意图;图3为本发明实施例中ios中展示不等高列表的系统的结构框图;图4为本发明实施例中列表行内容创建模块的具体结构框图。具体实施方式下面结合附图及具体实施例对本发明作进一步的详细描述。参见图1所示,本发明实施例提供一种ios中展示不等高列表的方法,该方法包括以下步骤:步骤s1、创建一个列表控制器,该列表控制器继承于ios系统自带的视图控制器;为该列表控制器添加实现列表功能的数据源方法,所述数据源方法遵循ios系统的数据源方法,且所述数据源方法包括列表组数获取方法、列表行数获取方法、列表行内容创建方法以及列表行高度计算方法。可以理解的是,本实施例中,创建的列表控制器为一个类,名称为dylistview,这个类继承于ios系统自带的视图控制器函数uiviewcontroller。并且,列表组数获取方法的名称为numberofsectionsintableview,用于实现列表视图中列表组数的获取,即获取当前列表视图中有多少组列表;列表行数获取方法的名称为numberofrowsinsection,用于实现各列表中列表行数的获取,即获取各列表中有多少行;列表行内容创建方法的名称为cellforrowatindexpath,用于实现各列表中每行内容的创建,即为各列表中的每一行创建具体的显示内容;列表行高度计算方法的名称为heightforrowatindexpath,用于实现各列表中每行高度的计算,即计算出各列表中每一行的实际的准确高度,从而相加得到各列表的不同高度。步骤s2、为列表控制器定义数组(如dataarr),该数组用来存储待展示的列表中的数据。步骤s3、定义列表的视图属性为列表视图后,创建列表视图,并对该列表视图的坐标值、数据源以及列表代理进行设置。实际操作中,定义列表的视图属性为列表视图时,是定义一个列表uitableview类型的属性为列表视图tableview。在一种实施方式中,步骤s3具体包括以下流程:步骤s301、定义列表的视图属性为列表视图后,使用用于实现列表视图创建的列表视图创建函数创建一个列表视图tableview。本实施例中,列表视图创建函数选择为可实现列表视图创建功能的ios系统自带的alloc函数。步骤s302、为创建的列表视图tableview设置坐标值,将坐标值设置为列表控制器的坐标值bounds。步骤s303、为创建的列表视图tableview设置数据源,将数据源设置为列表控制器的数组dataarr。步骤s304、为创建的列表视图tableview设置列表代理,将列表代理设置为列表控制器。步骤s4、列表视图创建并设置完成后,通过调用列表控制器中的列表组数获取方法,实现列表视图中列表组数的获取。可以理解的是,由于步骤s303中,已将列表视图的数据源设置为列表控制器的数组(如dataarr)。因此,通过调用列表控制器中的列表组数获取方法,可根据列表控制器的数组得到列表视图中有多少组列表的信息。步骤s5、列表组数获取完成后,通过调用列表控制器中的列表行数获取方法,实现各列表中列表行数的获取。同样可以理解的是,由于步骤s303中,已将列表视图的数据源设置为列表控制器的数组(如dataarr)。因此,通过调用列表控制器中的列表行数获取方法,可根据列表控制器的数组中的数据个数得到列表视图中有多少组列表的信息,如dataarr的count值,count值代表各列表有多少行。步骤s6、列表行数获取完成后,通过调用列表控制器中的列表行内容创建方法,实现各列表中每行内容的创建。在一种实施方式中,步骤s6具体包括以下流程:步骤s601、通过调用列表控制器中的列表行内容创建方法按顺序从列表视图中出列一个列表中的一个列表行,即cell,列表中每个列表行用cell表示,转入步骤s602。步骤s602、判断出列的列表行cell是否为空,若是,表明该行还从来没有创建过,则转入步骤s603进行创建;否则,转入步骤s604。步骤s603、使用用于实现分配内存的内存分配函数为该列表行cell分配内存;使用用于定义显示样式的显示样式设置函数为该列表行cell设置显示样式;并为该列表行cell添加重用标示,如mycell,转入步骤s604。通过s603的操作,就可以完成该列表行cell的创建。本实施例中,内存分配函数选择为可实现分配内存功能的ios系统自带的alloc函数;显示样式设置函数选择为可实现定义显示样式功能的ios提供的initwithstyle函数。另外,步骤s603中会为创建的列表行cell添加重用标示,这样在每个列表滑动时就不需重复创建,通过重用标示可以使用上一次创建的列表cell,操作效率更高。步骤s604、获取当前出列的列表行cell的索引路径属性indexpath(相当于列表行cell在列表控制器数组dataarr中的地址索引属性);根据该索引路径属性在列表控制器的数组dataarr中获取到对应的数据,该数据为模型数据,转入步骤s605。步骤s605、通过模型数据赋值函数将获取到的数据填充至当前出列的列表行cell中,作为该列表行cell的显示内容,转入步骤s606。本实施例中,模型数据赋值函数选择为ios提供的configcellwithmodel函数。步骤s606、重复步骤s601~s605,直至各列表中的每行内容均创建完成。步骤s7、列表行内容创建完成后,通过调用列表控制器中的列表行高度计算方法,实现各列表中每行高度的计算;将各列表中计算出的每行高度相加,得到各列表的实际高度。可以理解的是,计算各列表中每行高度时,所计算的高度必须准确,行高度太高了会存有空白,行高度太低了会存在内容显示不全的问题。因此,计算行高度时需要根据列表中每一行中显示的具体内容,计算出列表中每一行实际的准确高度。基于上述设计思路,在实际操作时,步骤s7中,通过调用列表控制器中的列表行高度计算方法,实现各列表中每行高度的计算的具体操作如下:1)按顺序获取一个列表中的一个列表行cell所对应的索引路径属性indexpath(获取方式同步骤s604);根据该索引路径属性在列表控制器的数组dataarr中获取到对应的数据,该数据为模型数据。2)根据获取到的数据,利用高度计算函数计算出对应列表行cell的实际高度。3)重复步骤1)~2),直至各列表中每行高度均计算完成。步骤s7中,计算行高度时是根据列表中每一行中显示的具体内容计算出列表中每一行实际的准确高度。由于每个cell显示的内容不一样,计算出的列表行的实际高度也就不同,相加得到的各列表的高度也就不同,因此,当按照计算出的实际高度进行展示时就可以实现不等高的列表,从而满足不等高列表展示的需求。步骤s8、根据列表组数、各列表中列表行数、各列表中每行的内容,将各列表按照计算出的实际高度在列表视图中进行不等高展示。利用本发明的方法实现不等高列表的展示时,是通过创建的列表控制器的各种数据源方法来实现的。该列表控制器继承于ios系统自带的视图控制器,且列表控制器的各种数据源方法均遵循ios系统的数据源方法,因此,无需将第三方框架导入到ios系统项目中,也无需额外添加过多代码,避免了增加项目的复杂度以及引入程序bug的问题。对应上述的ios中展示不等高列表的方法,本发明实施例还提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可实现上述各实施例中的ios中展示不等高列表的方法的步骤。需要说明的是,所述存储介质包括u盘、移动硬盘、rom(read-onlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、磁碟或者光盘等各种可以存储程序代码的介质。另外,参见图2所示,对应上述的ios中展示不等高列表的方法,本发明实施例还提供一种ios中展示不等高列表的设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时可实现上述各实施例中的ios中展示不等高列表的方法的步骤。参见图3所示,本发明实施例还提供一种ios中展示不等高列表的系统,该系统包括列表控制器创建模块、列表控制器数组定义模块、列表视图创建模块、列表组数获取模块、列表行数获取模块、列表行内容创建模块、列表行高度计算模块和列表展示模块。其中,列表控制器创建模块用于:创建列表控制器,该列表控制器继承于ios系统自带的视图控制器;为该列表控制器添加实现列表功能的数据源方法,所述数据源方法遵循ios系统的数据源方法,且所述数据源方法包括列表组数获取方法、列表行数获取方法、列表行内容创建方法以及列表行高度计算方法。列表控制器数组定义模块用于:为列表控制器定义数组,该数组用来存储待展示的列表中的数据。列表视图创建模块用于:定义列表的视图属性为列表视图后,创建列表视图;并对该列表视图的坐标值、数据源以及列表代理进行设置。其具体实现流程为:定义列表的视图属性为列表视图后,使用列表视图创建函数创建一个列表视图;为创建的列表视图设置坐标值,将坐标值设置为列表控制器的坐标值;为创建的列表视图设置数据源,将数据源设置为列表控制器的数组;为创建的列表视图设置列表代理,将列表代理设置为列表控制器。列表组数获取模块用于:通过调用列表控制器中的列表组数获取方法,实现列表视图中列表组数的获取。列表行数获取模块用于:通过调用列表控制器中的列表行数获取方法,实现各列表中列表行数的获取。列表行内容创建模块用于:通过调用列表控制器中的列表行内容创建方法,实现各列表中每行内容的创建。列表行高度计算模块用于:通过调用列表控制器中的列表行高度计算方法,实现各列表中每行高度的计算;将各列表中计算出的每行高度相加,得到各列表的实际高度。其具体实现流程为:按顺序获取一个列表中的一个列表行所对应的索引路径属性,根据该索引路径属性在列表控制器的数组中获取到对应的数据,该数据为模型数据;根据获取到的数据,利用高度计算函数计算出对应列表行的实际高度;重复上述操作,直至各列表中每行高度均计算完成。列表展示模块用于:根据列表组数、各列表中列表行数、各列表中每行的内容,将各列表按照计算出的实际高度在列表视图中进行展示。进一步地,参见图4所示,列表行内容创建模块包括列表行出列子模块、列表行判断子模块、列表行创建子模块、数据获取子模块、数据填充子模块和处理判断子模块。其中,列表行出列子模块用于:收到出列信号后,通过调用列表控制器中的列表行内容创建方法,按顺序从列表视图中出列一个列表中的一个列表行,向列表行判断子模块发送列表行判断信号;列表行判断子模块用于:收到列表行判断信号后,通过调用列表控制器中的列表行内容创建方法,判断出列的列表行是否为空,若是,向列表行创建子模块发送创建信号,否则,向数据获取子模块发送数据获取信号;列表行创建子模块用于:收到判断信号后,通过调用列表控制器中的列表行内容创建方法,使用内存分配函数为该列表行分配内存,使用显示样式设置函数为该列表行设置显示样式;并为该列表行添加重用标示,向数据获取子模块发送数据获取信号;数据获取子模块用于:收到数据获取信号后,通过调用列表控制器中的列表行内容创建方法,获取当前出列的列表行的索引路径属性;根据该索引路径属性在列表控制器的数组中获取到对应的数据,该数据为模型数据;向数据填充子模块发送数据填充信号;数据填充子模块用于:收到数据填充信号后,通过调用列表控制器中的列表行内容创建方法,使用模型数据赋值函数将获取到的数据填充至当前出列的列表行中,作为该列表行的显示内容;向处理判断子模块发送处理判断信号;处理判断子模块用于:收到处理判断信号后,通过调用列表控制器中的列表行内容创建方法,判断各列表中的每行内容是否均创建完成,若是,结束操作;否则,向列表行出列子模块发送出列信号。需要说明的是:上述实施例提供的系统在实现ios中的不等高列表展示时,仅以上述各功能模块的划分进行举例说明,实际应用中,可根据需要将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。本发明不局限于上述实施方式,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1