发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种特殊样式数字的转化方法,在输入显示数字后,可以直接快速修改数字样式,无需占用更多内存,使得系统运行速度快,而且修改非常灵活,只需修改数字图片即可,无需修改转化代码,使用起来更加灵活方便。
为达到以上目的,本发明采取的技术方案是:
一种特殊样式数字的转化方法,包括步骤:
预先定义一存储数组,构造一用于在所述存储数组中加载预设的各种数字的样式图片的加载函数,并调用所述加载函数在所述存储数组中加载预设的各种数字的样式图片;
当需要将一数字转化为特殊样式的数字图片时,将该数字划分为多个顺次排列的元素,所有划分后的元素均包含在预设的各种数字内,并将所有元素存放到一个元素数组中,循环遍历所述元素数组中的每个元素,在所述存储数组找到每个元素对应的数字样式图片,并将同一元素数组中所有元素对应的数字样式图片顺次拼接成一个完整的数字样式图片,并设置拼接后的数字样式图片的数字样式。
在上述技术方案的基础上,所述加载函数根据数字样式图片的前缀名字来加载数字样式图片。
在上述技术方案的基础上,构造一用于在所述存储数组中加载预设的各种数字的样式图片的加载函数的具体过程为:创建一个字典,判断所述字典中是否存在数字样式图片的前缀名字,若存在,则表明所述字典中已经加载过数字样式图片,直接取出对应前缀名字的数字样式图片,若不存在,则遍历数字0至9,在所述存储数组中找到数字0至9的样式图片,并将找到的所有数字样式图片保存至所述字典中。
在上述技术方案的基础上,调用所述加载函数在所述存储数组中加载各种数字的样式图片的步骤包括:构造一初始化函数,在所述初始化函数中调用所述加载函数,在初始化时在所述存储数组中完成各种数字样式图片的加载。
本发明还提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
本发明还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
本发明还提供了一种特殊样式数字的转化系统,所述系统包括预加载模块、查找模块和处理模块;
所述预加载模块用于预先定义一存储数组,构造一用于在所述存储数组中加载预设的各种数字的样式图片的加载函数,并调用所述加载函数在所述存储数组中加载预设的各种数字的样式图片;
所述查找模块用于当需要将一数字转化为特殊样式的数字图片时,将该数字划分为多个顺次排列的元素,所有划分后的元素均包含在预设的各种数字内,并将所有元素存放到一个元素数组中,循环遍历所述元素数组中的每个元素,在所述存储数组找到每个元素对应的数字样式图片;
所述处理模块用于将找到的同一元素数组中所有元素对应的数字样式图片顺次拼接成一个完整的样式图片,并设置拼接后的数字样式图片的数字样式。
在上述技术方案的基础上,所述预加载模块构造的加载函数根据数字样式图片的前缀名字来加载数字样式图片。
在上述技术方案的基础上,所述预加载模块包括字典创建单元和判断单元;
所述字典创建单元用于创建一个字典;
所述判断单元用于所述字典中是否存在数字样式图片的前缀名字,若存在,则表明所述字典中已经加载过数字样式图片,直接取出对应前缀名字的数字样式图片,若不存在,则遍历数字0至9,在所述存储数组中找到数字0至9的样式图片,并将找到的所有数字样式图片保存至所述字典中。
在上述技术方案的基础上,所述预加载模块包括初始化单元,所述初始化单元用于构造一初始化函数,在所述初始化函数中调用所述加载函数,在初始化时在所述存储数组中完成各种数字样式图片的加载。
与现有技术相比,本发明的优点在于:
本发明的一种特殊样式数字的转化方法,在输入显示数字后,可以直接快速修改数字样式,无需占用更多内存,使得系统运行速度快,而且修改非常灵活,只需修改数字图片即可,无需修改转化代码,使用起来更加灵活方便。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例提供一种特殊样式数字的转化方法,包括步骤:
S1:预先定义一存储数组,该存储数组用于存储预设的各种数字的样式图片,此处预设的各种数字可理解为数字0至9,预设的各种数字的样式图片可以是相同的样式,也可以为不同的样式,若是相同的样式,后续需转化的数字为两位数,如56,则可以在分别获取到数字5和6的样式图片时,直接进行拼接,若为不同的样式,则无法直接拼接数字5和6的样式图片,需要将数字5和6的样式图片调整一致后,再进行拼接。
在本发明实施例中,预先定义一存储数组的过程为:定义一个数字类DYView,并具体定义相关属性。具体为:定义一个view类,该view是UIView类型的,该view作为显示数字的载体,后续需要将一些数字特效加载在该view上,并定义一个UILable类型的lable属性,一个是数组NSMutableArray类型的textTureArray属性,用来保存加载的各种数字的样式图片,即数组textTureArray为存储数组。
S2:构造一用于在存储数组中加载预设的各种数字的样式图片的加载函数,可以通过调用加载函数在存储数组中加载预设的各种数字的样式图片。
具体地,加载函数根据数字样式图片的前缀名字来加载数字样式图片。在本实施例中,构造的加载函数的名字为loadTexture,该加载函数没有返回值,即返回值是void,这个函数需要一个参数,且需要的参数类型为NSString类型,参数名字为textureRootName,该加载函数的作用是根据数字样式图片的前缀名字加载各种数字对应的样式图片。
上述加载函数的具体实现过程如下:
S201:定义一个字典NSMutableDictionary类型的静态变量,变量的名字是cacheDic,定义一个静态变量,变量类型为static,定义一个一次性的函数onceToken使用执行一次的函数dispatch_once创建一个字典,创建的字典方法是使用字典创建类NSMutableDictionary调用内存分配函数alloc,调用初始化方法init完成初始化。在本实施例中使用dispatch_once意味着创建字典只能创建一次;
S202:拿到创建的字典后,判断字典中是否存在数字样式图片的前缀名字,即拿到创建的字典cacheDic,拿到这个字典里面的所有的keys,拿到所有的key之后,保存起来,判断所有的key里面是否存在textureRootName这个key,如果存在,则说明已经加载过数字样式图片,直接将cacheDic使用objectForKey的方法将字典里面key为textureRootName的图片取出来,取出来的是一个数组;若不存在,则转至步骤S203;
S203:如果创建的字典里面不包含有textureRootName这个key,则说明没有用将数字样式图片存储到字典中,此处需要创建一个数组arr,创建数组arr使用数组类NSMutableArray,调用alloc的内存分配方法,使用init的初始化方法将这个创建的数组初始化;
遍历数字0到9,定义一个for循环,for循环的次数是10次,在每次循环内部,通过textureRootName和循环索引可以拼接成一个样式图片的名字,再通过这个名字在存储数组中找到相应数字的样式图片,并将找到的数字样式图片保存到本步骤中创建的数组arr中,当for循环执行完毕后,此时数组arr中将会存储10张图片,最后将arr添加到字典中,字典的key值为textureRootName,并将这个数组arr使用textureArray保存起来。
通过上述步骤S203,完成了0到9之间的数字样式图片加载字典中,且加载的数字样式图片是根据数字样式图片的前缀名字来确定的,方便后续过程中使用。
S3:构造一初始化函数,在初始化函数中调用加载函数,在初始化时在存储数组中完成各种数字样式图片的加载。
具体为:定义一个初始化函数initWithTexture,该初始化函数需要一个参数textureName,参数textureName是字符串类型,在初始化函数内部调用调用加载函数,将textureName作为参数传给步骤S2中定义的loadTexture函数,即可在初始化的时候完成各种数字样式图片的加载,并在初始化函数内部创建label,将该lable添加到当前的view中。
S4:当需要将一数字转化为特殊样式的数字图片时,将该数字划分为多个顺次排列的元素,所有划分后的元素均包含在预设的各种数字内,并将所有元素存放到一个元素数组中,该元素数组为numberArray,此处的元素可理解为数字0至9,在存储数组中已存储的数字样式图片包含有划分后所有元素对应的数字样式图片。当待转化的数字为两位数,如56,则将数字56划分为2个顺次排列的元素5和元素6,并将元素5和6顺次存放到元素数组中,当待转化的数字为三位数,如110时,则将数字110划分为3个顺次排列的元素1、元素1和元素0,并将元素1、元素1和元素0顺次存放到元素数组中。
S5:判断元素数组中元素的个数是否为0,若为0,则直接返回,表示结束,若不为0,则转至步骤S6。
S6:创建一个富文本字符串NSMutableAttributedString类型的变量str,定义NSAttributedString类型的变量attributedString,并且设置变量attributedString初始值为nil,设置NSTextAttachment类型的变量为attatchment,并且设置变量attatchment初始值为nil,得到元素数组numberArray后,循环遍历元素数组中的每个元素,在存储数组找到每个元素对应的数字样式图片,即得到每个元素的image,并设置每个元素样式图片的尺寸(宽和高),根据将相邻两个元素样式图片传入的间距,可以设置每个元素样式图片的坐标值,将这些元素拼接起来,比如数字56将会被划分为顺次排列的元素5和6,在分别得到元素5和6的样式图片后,每个元素的样式图片均为一个attributedString,按照顺序,将所有的attributedString拼接到一起,从而拼接成一个完整的样式图片,使用创建的lable将拼接后的完整的样式图片显示出来,并设置拼接后的样式图片的数字样式。
本发明实施例的一种特殊样式数字的转化方法,在输入显示数字后,可以直接快速修改数字样式,无需占用更多内存,使得系统运行速度快,而且修改非常灵活,只需修改数字图片即可,无需修改转化代码,使用起来更加灵活方便。
本发明实施例还提供了一种存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法的步骤。
参见图2所示,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并在处理器上运行的计算机程序,处理器执行计算机程序时实现上述方法的步骤。
本发明实施例还提供了一种特殊样式数字的转化系统,系统包括预加载模块、查找模块和处理模块;
预加载模块用于预先定义一存储数组,构造一用于在存储数组中加载预设的各种数字的样式图片的加载函数,并调用加载函数在存储数组中加载预设的各种数字的样式图片;
查找模块用于当需要将一数字转化为特殊样式的数字图片时,将该数字划分为多个顺次排列的元素,所有划分后的元素均包含在预设的各种数字内,并将所有元素存放到一个元素数组中,循环遍历元素数组中的每个元素,在存储数组找到每个元素对应的数字样式图片;
处理模块用于将找到的同一元素数组中所有元素对应的数字样式图片顺次拼接成一个完整的样式图片,并设置拼接后的数字样式图片的数字样式。
进一步地,预加载模块构造的加载函数根据数字样式图片的前缀名字来加载数字样式图片。
进一步地,预加载模块包括字典创建单元和判断单元;
字典创建单元用于创建一个字典;
判断单元用于字典中是否存在数字样式图片的前缀名字,若存在,则表明字典中已经加载过数字样式图片,直接取出对应前缀名字的数字样式图片,若不存在,则遍历数字0至9,在存储数组中找到数字0至9的样式图片,并将找到的所有数字样式图片保存至字典中。
进一步地,预加载模块包括初始化单元,初始化单元用于构造一初始化函数,在初始化函数中调用加载函数,在初始化时在存储数组中完成各种数字样式图片的加载。
本发明实施例的一种特殊样式数字的转化系统,在输入显示数字后,可以直接快速修改数字样式,无需占用更多内存,使得系统运行速度快,而且修改非常灵活,只需修改数字图片即可,无需修改转化代码,使用起来更加灵活方便。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。