一种iOS移动端文本滚动显示的实现方法及装置与流程

文档序号:18141278发布日期:2019-07-10 11:06阅读:232来源:国知局
一种iOS移动端文本滚动显示的实现方法及装置与流程

本发明涉及互联网移动端应用开发领域,更具体地,涉及一种ios移动端文本滚动显示的实现方法及装置。



背景技术:

随着互联网的快速发展,ios移动端的信息显示越来越多样化,以满足不同用户的需求。然而,由于ios移动端设备的屏幕大小是有限的以及ui设计风格的影响,移动端中很多时候显示的区域比较小,当需要在有限的区域内显示更多的内容时,需对文本的显示进行滚动处理。

文本滚动的常规实现方案是使用文本动画,但是动画这种方案所支持的滚动的效果有限,只能按照预先设定的动画效果来显示文本,而不能通过动态配置的方式改变文本的显示效果,例如文本滚动实现是向左还是向右,因此,不能满足移动端用户的个性化需求。



技术实现要素:

为了解决现有技术存在的只能按照预设的动画效果显示文本,不能动态地配置文本滚动显示效果,本发明提供一种ios移动端文本滚动显示的实现方法及装置。

根据本发明的一个方面,提供一种ios移动端文本滚动显示的实现方法,包括:

s1,创建一个继承uiview类的文本滚动显示类,并为所述文本滚动显示类添加属性,所述属性包括:用于保存待显示文本的数组变量,用于设置待显示文本滚动方向的枚举变量以及scrollview类;

s2,对所述文本滚动显示类进行初始化设置;

s3,通过遍历所述数组变量对所述待显示文本的所有内容视图进行滚动显示的设置;

s4,设置所述scrollview类的contentoffset属性的初始值并移除所述scrollview类所有层的动画;

s5,检测所述待显示文本是否需要进行滚动显示,若需要进行滚动显示,利用所述文本滚动显示类对所述待显示文本进行滚动显示。

其中,所述步骤s5中检测所述待显示文本是否需要进行滚动显示的步骤进一步包括:

对待显示文本的所有内容逐一执行以下步骤:

获取待显示文本当前内容视图的宽度和所述待显示文本当前内容的父视图的宽度,若所述待显示文本当前内容视图的宽度大于其父视图的宽度,则获知所述待显示文本当前内容需要进行滚动显示。

其中,所述步骤s5中利用所述文本滚动显示类对所述待显示文本进行滚动显示的步骤进一步包括:

对待显示文本的所有内容逐一执行以下步骤:

设置待显示文本当前内容视图的父视图横向的滚动范围和纵向的滚动范围;

获取待显示文本当前内容的滚动方向;

计算待显示文本当前内容的滚动时间;

通过调用animatewithduration方法在所述滚动时间内添加动画,并根据所述滚动方向和contentoffset属性的初始值相应地设置所述contentoffset属性的值。

其中,所述步骤s2进一步包括:

设置默认的文本滚动方向、文本滚动速度、文本对齐方式、文本可滚动以及不允许与用户进行交互。

其中,所述步骤s3进一步包括:

通过遍历所述数组变量对待显示文本的所有内容视图逐一执行以下步骤:

设置待显示文本当前内容视图的宽度和高度自适应;

使用点语法获取所述待显示文本当前内容视图的坐标值;

设置所述待显示文本当前内容视图的中心位置;

获取所述待显示文本当前内容视图的偏移值。

其中,步骤s1中所述属性还包括:用于保存用户设置的待显示文本的滚动方向的变量和滚动速度的变量。

根据本发明的另一个方面,提供一种ios移动端文本滚动显示的实现装置,包括:

类创建模块,用于创建一个继承uiview类的文本滚动显示类,并为所述文本滚动显示类添加属性,所述属性包括:用于保存待显示文本的数组变量,用于设置待显示文本滚动方向的枚举变量以及scrollview类;

初始化模块,用于对所述文本滚动显示类进行初始化设置;

滚动设置模块,用于通过遍历所述数组变量对所述待显示文本的所有内容视图进行滚动显示的设置;

偏移设置模块,用于设置所述scrollview类的contentoffset属性的初始值并移除所述scrollview类所有层的动画;

显示模块,用于检测所述待显示文本是否需要进行滚动显示,若需要进行滚动显示,利用所述文本滚动显示类对所述待显示文本进行滚动显示。

其中,所述显示模块具体用于:

设置待显示文本当前内容视图的父视图横向的滚动范围和纵向的滚动范围;

获取待显示文本当前内容的滚动方向;

计算待显示文本当前内容的滚动时间;

通过调用animatewithduration方法在所述滚动时间内添加动画,并根据所述滚动方向和contentoffset属性的初始值相应地设置所述contentoffset属性的值。

根据本发明的另一个方面,提高一种ios移动端文本滚动显示的实现设备,包括存储器、处理器、以及总线,

所述处理器和存储器通过所述总线完成相互间的通信;

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述存储器中的程序指令,以执行如上所述的方法。

根据本发明的又一个方面,提高一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上所述的方法。

本发明提出的一种ios移动端文本滚动显示的实现方法及装置,能够自动检测文本是否需要进行滚动展示,同时能够动态配置的方式对文本进行滚动展示,从而满足移动端用户的个性化需求。

附图说明

图1为本发明一实施例提供的一种ios移动端文本滚动显示的实现方法的流程示意图;

图2为本发明另一实施例提供的一种ios移动端文本滚动显示的实现装置的结构示意图;

图3为本发明另一实施例提供的一种ios移动端文本滚动显示的实现设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他的实施例,都属于本发明保护的范围。

如图1所示,为本发明一实施例提供的一种ios移动端文本滚动显示的实现方法的流程示意图,包括:

s1,创建一个继承uiview类的文本滚动显示类,并为所述文本滚动显示类添加属性,所述属性包括:用于保存待显示文本的数组变量,用于设置待显示文本滚动方向的枚举变量以及scrollview类;

s2,对所述文本滚动显示类进行初始化设置;

s3,通过遍历所述数组变量对所述待显示文本的所有内容视图进行滚动显示的设置;

s4,设置所述scrollview类的contentoffset属性的初始值并移除所述scrollview类所有层的动画;

s5,检测所述待显示文本是否需要进行滚动显示,若需要进行滚动显示,利用所述文本滚动显示类对所述待显示文本进行滚动显示。

具体地,s1,在ios系统中,创建一个文本滚动显示类,文本滚动显示类继承于uiview类,然后在这个文本滚动显示类的内部添加三个属性,其中一个属性是数组类型的变量labels,labels数组用于保存待显示文本的所有内容;另外一个属性为用于设置待显示文本滚动方向的枚举变量scrolldirection,这个枚举变量包括两个方向,向右滚动为dyautoscrolldirectionright,向左滚动为dyautoscrolldirectionleft;还有一个属性为scrollview类,scrollview是一种控件,它的子控件远远大于scrollview本身,所以scrollview展现出来的只有子控件的一部分,通过滑动的形式来呈现出子控件的内容,这个scrollview类作为待显示文本的父视图,通过滑动的形式来呈现待显示文本的所有内容。本步骤创建一个滚动的容器,同时使用scrollview是保证滚动正常进行的基础,通过添加用于设置滚动方向的枚举变量,保证了待显示文本既可以设置为向左滚动显示又可以设置为向右滚动显示。

s2中,对所述文本滚动显示类进行初始化设置是指对在步骤s1中所创建的文本滚动显示类的各个属性进行初始化赋值,包括对所述数组变量进行赋值,对所述枚举变量进行赋值,对所述scrollview类的对象进行初始化赋值。

通过对所创建的文本滚动显示类进行初始化,可以避免程序出错,从而保证程序的健壮性,即使对所述文本滚动显示类的属性不进行设置,可以使用默认的配置,从而保证实现基本的滚动效果。

s3中,所述数组变量labels存储有待显示文本的所有内容,每个数组元素都是一个label,表示待显示文本的一个内容视图,因此,可以通过for循环遍历所述数组变量对所述待显示文本的所有内容视图进行滚动显示的设置。所述滚动显示的设置是指对所述每个内容视图在其父视图中的显示位置进行设置,例如可以将每个内容视图的宽度和高度设置为自适应调整,从而实现较优的滚动效果。这一步进行滚动显示的设置可以根据用户的需求或具体的业务需求来确定。

s4中,设置所述scrollview类的contentoffset属性的初始值,可以把滚动视图看成是两层:“scrollview外壳”和“内容视图”contentoffset属性是scrollview外壳内部,显示内容所在的坐标点。即滚动视图中,滚动的是内容视图,而contentoffset坐标,指代的就是内容视图的坐标。因此,contentoffset的值非常关键,决定了内容视图的显示位置。contentoffset的默认点为cgpointzero,即通常设置scrollview的偏移量contentoffset的初始值为坐标原点(x坐标为0,y坐标为0)。

通过调用removeallanimations函数将scrollview的所有layer层面的动画都移除,目的是为了在进行文本滚动显示时,清楚残留的动画,避免影响文本的滚动显示。

s5,逐一取出所述数组变量中保存的待显示文本的内容视图,检测所述待显示文本的当前内容视图是否需要进行滚动显示,通过当前内容视图的宽度与父视图scrollview的宽度进行比较来确定是否需要进行滚动显示,若需要进行滚动显示,则利用所述文本滚动显示类对所述待显示文本进行滚动显示。所述利用自定义的文本滚动显示类对所述待显示文本进行滚动显示是指执行s1至s4的所有步骤之后,文本滚动显示类已经进行了滚动显示的相关设置,在这里,可以利用设置好的文本滚动显示类,通过添加动画的形式实现文本的自动滚动显示。

本发明提出的一种移动端文本滚动显示的实现方法,能够自动检测文本是否需要进行滚动展示,同时能够动态配置的方式对文本进行滚动展示,从而满足移动端用户的个性化需求。

基于上述实施例,所述步骤s5中检测所述待显示文本是否需要进行滚动显示的步骤进一步包括:

对待显示文本的所有内容逐一执行以下步骤:

获取待显示文本当前内容视图的宽度和所述待显示文本当前内容的父视图的宽度,若所述待显示文本当前内容视图的宽度大于其父视图的宽度,则获知所述待显示文本当前内容需要进行滚动显示。

具体地,对待显示文本的所有内容逐一进行是否需要滚动显示的检测,获取当前内容视图label的宽度,通过调用函数cgrectgetwidth进行获取,同时获取当前内容视图的父视图的宽度,也是通过调用函数cgrectgetwidth进行获取,如果获取到当前内容视图label的宽度大于其父视图的宽度,则获取所述待显示文本当前内容需要进行滚动显示,即需要让label实现滚动。

基于上述实施例,所述步骤s5中利用所述文本滚动显示类对所述待显示文本进行滚动显示的步骤进一步包括:

设置待显示文本当前内容视图的父视图横向的滚动范围和纵向的滚动范围;

获取待显示文本当前内容的滚动方向;

计算待显示文本当前内容的滚动时间;

通过调用animatewithduration方法在所述滚动时间内添加动画,并根据所述滚动方向和contentoffset属性的初始值相应地设置所述contentoffset属性的值。

具体地,定义一个cgsize类型的变量size,设置size的宽度为待显示文本当前内容视图label的长度加上label父视图的长度和label的边缘的距离,设置size的长度为待显示文本当前内容视图label竖直方向的宽度,设置label父视图横向滚动范围为所述size变量的宽度,label父视图纵向滚动范围为所述size变量的长度。

然后获取待显示文本当前内容视图label的滚动方向,确定是向左滚动还是向右滚动,并且使用变量doscrollleft保存所获取到的滚动方向。

用待显示文本当前内容视图label的宽度除以当前内容视图的滚动速度,就可以计算出待显示文本当前内容的滚动时间。

在所述滚动时间内添加uiview类型的动画,动画设置的方法是animatewithduration,在这个animatewithduration函数内部设置动画最终执行的位置,即根据所述滚动方向和contentoffset属性的初始值相应地设置所述contentoffset属性的值,那么待显示文本的当前内容就会在起点和终点之间添实现滚动动画的效果。例如,doscrollleft为yes说明是待显示问题的当前内容是向左滚动,如果向左滚动就需要设置scrollview的contentoffset为label文字的宽度,如果是向右滚动需要设置scrollview的contentoffset为起始点0。

动画执行完毕就继续循环执行上述步骤,直至待显示文本当前所有内容视图均显示完毕。

基于上述实施例,所述步骤s2进一步包括:

设置默认的文本滚动方向、文本滚动速度、文本对齐方式、文本可滚动以及不允许与用户进行交互。

具体地,对所述文本滚动显示类进行初始化设置包括:设置文本默认的滚动方向,即为枚举变量scrolldirection赋值;设置文本默认的滚动速度scrollspeed;设置文本默认的对齐方式textalignment,默认设置是左对齐nstextalignmentleft;设置label是否可以滚动,默认设置滚动label可以滚动;设置当前的滚动label是否允许用户交互,默认设置为no,即不允许与用户进行交互。通过这些默认设置保证滚动文本基本可用,即使不进行设置也可以实现文本的滚动。

基于上述实施例,所述步骤s3进一步包括:

通过遍历所述数组变量对待显示文本的所有内容视图逐一执行以下步骤:

设置待显示文本当前内容视图的宽度和高度自适应;

使用点语法获取所述待显示文本当前内容视图的坐标值;

设置所述待显示文本当前内容视图的中心位置;

获取所述待显示文本当前内容视图的偏移值。

具体地,滚动显示的设置过程如下:

1)对待显示文本当前内容视图label进行设置,设置label的宽度和高度自动适应;

2)使用点语法frames获取待显示文本当前内容视图label的坐标值frame;

3)设置label的中心位置,一般设置label为相对于父视图居中对齐;

4)获取所述待显示文本当前内容视图label的偏移值。通过内容视图的偏移值和scrollview的contentoffset的属性值实现文本滚动的正确显示。

基于上述实施例,步骤s1中所述属性还包括:用于保存用户设置的待显示文本的滚动方向的变量和滚动速度的变量。

具体地,在创建所述文本滚动显示类时,给用户提供设置接口,包括用于保存用户设置的文本滚动方向和滚动速度的变量,这样,就可以实现滚动方向、滚动速度的设置,还可以自动检测是否需要滚动,从而支持多种配置。

如图2所示,为本发明另一实施例提供的一种ios移动端文本滚动显示的实现装置的结构示意图,包括:类创建模块21、初始化模块22、滚动设置模块23、偏移设置模块24和显示模块25,其中,

类创建模块21,用于创建一个继承uiview类的文本滚动显示类,并为所述文本滚动显示类添加属性,所述属性包括:用于保存待显示文本的数组变量,用于设置待显示文本滚动方向的枚举变量以及scrollview类;

初始化模块22,用于对所述文本滚动显示类进行初始化设置;

滚动设置模块23,用于通过遍历所述数组变量对所述待显示文本的所有内容视图进行滚动显示的设置;

偏移设置模块24,用于设置所述scrollview类的contentoffset属性的初始值并移除所述scrollview类所有层的动画;

显示模块25,用于检测所述待显示文本是否需要进行滚动显示,若需要进行滚动显示,利用所述文本滚动显示类对所述待显示文本进行滚动显示。

具体地,具体地,类创建模块21创建一个文本滚动显示类,文本滚动显示类继承于uiview类,然后在这个文本滚动显示类的内部添加三个属性,其中一个属性是数组类型的变量labels,labels数组用于保存待显示文本的所有内容;另外一个属性为用于设置待显示文本滚动方向的枚举变量scrolldirection,这个枚举变量包括两个方向,向右滚动为dyautoscrolldirectionright,向左滚动为dyautoscrolldirectionleft;还有一个属性为scrollview类,scrollview是一种控件,它的子控件远远大于scrollview本身,所以scrollview展现出来的只有子控件的一部分,通过滑动的形式来呈现出子控件的内容,这个scrollview类作为待显示文本的父视图,通过滑动的形式来呈现待显示文本的所有内容。本步骤创建一个滚动的容器,同时使用scrollview是保证滚动正常进行的基础,通过添加用于设置滚动方向的枚举变量,保证了待显示文本既可以设置为向左滚动显示又可以设置为向右滚动显示。

初始化模块22对所述文本滚动显示类进行初始化设置,对类创建模块21所创建的文本滚动显示类的各个属性进行初始化赋值,包括对所述数组变量进行赋值,对所述枚举变量进行赋值,对所述scrollview类的对象进行初始化赋值。

通过对所创建的文本滚动显示类进行初始化,可以避免程序出错,从而保证程序的健壮性,即使对所述文本滚动显示类的属性不进行设置,可以使用默认的配置,从而保证实现基本的滚动效果。

所述数组变量labels存储有待显示文本的所有内容,每个数组元素都是一个label,表示待显示文本的一个内容视图,因此,滚动设置模块23可以通过for循环遍历所述数组变量对所述待显示文本的所有内容视图进行滚动显示的设置。所述滚动显示的设置是指对所述每个内容视图在其父视图中的显示位置进行设置,例如可以将每个内容视图的宽度和高度设置为自适应调整,从而实现较优的滚动效果。这一步进行滚动显示的设置可以根据用户的需求或具体的业务需求来确定。

偏移设置模块24设置所述scrollview类的contentoffset属性的初始值,可以把滚动视图看成是两层:“scrollview外壳”和“内容视图”contentoffset属性是scrollview外壳内部,显示内容所在的坐标点。即滚动视图中,滚动的是内容视图,而contentoffset坐标,指代的就是内容视图的坐标。因此,contentoffset的值非常关键,决定了内容视图的显示位置。contentoffset的默认点为cgpointzero,即通常设置scrollview的偏移量contentoffset的初始值为坐标原点(x坐标为0,y坐标为0)。

通过调用removeallanimations函数将scrollview的所有layer层面的动画都移除,目的是为了在进行文本滚动显示时,清楚残留的动画,避免影响文本的滚动显示。

显示模块25逐一取出所述数组变量中保存的待显示文本的内容视图,检测所述待显示文本的当前内容视图是否需要进行滚动显示,通过当前内容视图的宽度与父视图scrollview的宽度进行比较来确定是否需要进行滚动显示,若需要进行滚动显示,则利用所述文本滚动显示类对所述待显示文本进行滚动显示。所述利用自定义的文本滚动显示类对所述待显示文本进行滚动显示是指文本滚动显示类已经进行了滚动显示的相关设置,在这里,可以利用设置好的文本滚动显示类,通过添加动画的形式实现文本的自动滚动显示。

其中,所述显示模块25具体用于:

对待显示文本的所有内容逐一执行以下步骤:

设置待显示文本当前内容视图的父视图横向的滚动范围和纵向的滚动范围;

获取待显示文本当前内容的滚动方向;

计算待显示文本当前内容的滚动时间;

通过调用animatewithduration方法在所述滚动时间内添加动画,并根据所述滚动方向和contentoffset属性的初始值相应地设置所述contentoffset属性的值。

具体地,所述显示模块25定义一个cgsize类型的变量size,设置size的宽度为待显示文本当前内容视图label的长度加上label父视图的长度和label的边缘的距离,设置size的长度为待显示文本当前内容视图label竖直方向的宽度,设置label父视图横向滚动范围为所述size变量的宽度,label父视图纵向滚动范围为所述size变量的长度。

然后显示模块25获取待显示文本当前内容视图label的滚动方向,确定是向左滚动还是向右滚动,并且使用变量doscrollleft保存所获取到的滚动方向。

显示模块25用待显示文本当前内容视图label的宽度除以当前内容视图的滚动速度,就可以计算出待显示文本当前内容的滚动时间。

显示模块25在所述滚动时间内添加uiview类型的动画,动画设置的方法是animatewithduration,在这个animatewithduration函数内部设置动画最终执行的位置,即根据所述滚动方向和contentoffset属性的初始值相应地设置所述contentoffset属性的值,那么待显示文本的当前内容就会在起点和终点之间添实现滚动动画的效果。例如,doscrollleft为yes说明是待显示问题的当前内容是向左滚动,如果向左滚动就需要设置scrollview的contentoffset为label文字的宽度,如果是向右滚动需要设置scrollview的contentoffset为起始点0。

动画执行完毕显示模块25就继续循环执行上述步骤,直至待显示文本当前所有内容视图均显示完毕。

如图3所示,为本发明另一实施例提供的一种ios移动端文本滚动显示的实现设备的结构示意图,包括存储器31、处理器32、以及总线33,

所述处理器32和存储器31通过所述总线33完成相互间的通信;

所述存储器31存储有可被所述处理器32执行的程序指令,所述处理器32调用所述存储器31中的程序指令,以执行如上述各实施例所述的方法,例如包括:s1,创建一个继承uiview类的文本滚动显示类,并为所述文本滚动显示类添加属性,所述属性包括:用于保存待显示文本的数组变量,用于设置待显示文本滚动方向的枚举变量以及scrollview类;s2,对所述文本滚动显示类进行初始化设置;s3,通过遍历所述数组变量对所述待显示文本的所有内容视图进行滚动显示的设置;s4,设置所述scrollview类的contentoffset属性的初始值并移除所述scrollview类所有层的动画;s5,检测所述待显示文本是否需要进行滚动显示,若需要进行滚动显示,利用所述文本滚动显示类对所述待显示文本进行滚动显示。

根据本发明的又一个方面,提高一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上述各实施例所述的方法,例如包括:s1,创建一个继承uiview类的文本滚动显示类,并为所述文本滚动显示类添加属性,所述属性包括:用于保存待显示文本的数组变量,用于设置待显示文本滚动方向的枚举变量以及scrollview类;s2,对所述文本滚动显示类进行初始化设置;s3,通过遍历所述数组变量对所述待显示文本的所有内容视图进行滚动显示的设置;s4,设置所述scrollview类的contentoffset属性的初始值并移除所述scrollview类所有层的动画;s5,检测所述待显示文本是否需要进行滚动显示,若需要进行滚动显示,利用所述文本滚动显示类对所述待显示文本进行滚动显示。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的一种ios移动端文本滚动显示的实现设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后,本发明的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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