一种iOS中的视图自动布局方法及装置制造方法及图纸

技术编号:17032420 阅读:23 留言:0更新日期:2018-01-13 19:07
本发明专利技术提供一种iOS中的视图自动布局方法及装置,所述方法包括:S1,获取根据约束描述规则所设置的目标视图的约束信息;S2,对所述约束信息进行解析,根据解析结果对所述目标视图进行布局。本发明专利技术可以直观看出目标视图设置的约束,提高了开发效率;此外,在对目标视图的布局进行修改时,只需要修改所述目标视图相应的约束信息,便于维护。

【技术实现步骤摘要】
一种iOS中的视图自动布局方法及装置
本专利技术涉及iOS开发领域,更具体地,涉及一种iOS中的视图自动布局方法及装置。
技术介绍
自iOS6以来,自动布局是iOS界面开发中广泛应用的技术,它能使视图根据屏幕尺寸和视图内容进行自动布局。开发者不用根据不同情况计算每个视图的坐标与尺寸,而只需要设置每个视图的约束,布局系统会自动计算每个视图的坐标和尺寸,然后进行布局。目前,在给视图设置约束时,通常有两种方式。第一种方式是使用iOS的可视化开发工具,通过拖拽的方式给每个视图设置约束。此种方式虽然能预览设置约束后的布局效果,但由于约束信息比较分散,且除了约束信息之外还有很多其他信息,导致不能直观看出每个视图设置的约束。第二种方式是在源代码中通过代码构造约束相关逻辑,此种方式由于代码构造的约束相关逻辑中有很多重复性的代码,约束信息更不直观,且开发效率低。综上所述,现有的iOS中的视图自动布局方法中约束信息不直观,导致约束信息查看和视图布局修改困难。
技术实现思路
为克服上述现有的iOS中的视图自动布局方法中约束信息不直观,导致约束信息查看和视图布局修改困难的问题或者至少部分地解决上述问题,本专利技术提供了一种iOS中的视图自动布局方法及装置。根据本专利技术的第一方面,提供一种iOS中的视图自动布局方法,包括:S1,获取根据约束描述规则所设置的目标视图的约束信息;S2,对所述约束信息进行解析,根据解析结果对所述目标视图进行布局。具体地,所述步骤S1具体包括:使用所述约束描述规则中的线性方程或线性不等式描述目标视图的约束信息,所述约束信息包括所述目标视图、基准视图、所述目标视图和所述基准视图的属性、运算符号、关系符号和常数。具体地,所述步骤S2具体包括:对所述约束信息中的运算符号、关系符号、运算、目标视图的属性和基准视图的属性进行解析。具体地,对所述约束信息进行解析之前还包括:构造第一函数,以解析所述线性方程中和线性不等式中的关系符号;构造第二函数,以解析所述线性方程或线性不等式中目标视图的属性和基准视图的属性;构造第三函数,以解析所述线性方程或线性不等式中的运算符号;构造第四函数,以解析所述线性方程或线性不等式中的运算;构造第五函数,以调用所述第一函数、第二函数、第三函数和第四函数对所述约束信息进行解析。具体地,对所述约束信息中的运算符号进行解析的步骤具体包括:将所述约束信息中的第一运算符号解析为将所述基准视图的属性值乘以预设常数;将所述约束信息中的第二运算符号解析为将所述基准视图的属性向右或向下平移;将所述约束信息中的第三运算符号解析为将所述基准视图的属性向左或向上平移。具体地,所述目标视图的属性包括left、right、top、bottom、width和height;所述基准视图的属性包括left、right、top、bottom、width和height;所述关系符号包括==、=、>=和<=;所述运算符号包括+、-、*和/。具体地,所述步骤S2具体包括:将解析结果封装为约束对象,将所述约束对象添加到所述目标视图的对象中;根据所述目标视图对象中的约束对象,对所述目标视图进行布局。根据本专利技术的第二方面,提供一种iOS中的视图自动布局装置,包括:获取单元,用于获取根据约束描述规则所设置的目标视图的约束信息;布局单元,用于对所述约束信息进行解析,根据解析结果对所述目标视图进行布局。根据本专利技术的第三方面,提供一种iOS中的视图自动布局设备,包括:至少一个处理器、至少一个存储器和总线;其中,所述处理器和存储器通过所述总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如前所述的方法。根据本专利技术的第四方面,提供一种非暂态计算机可读存储介质,用于存储如前所述方法的计算机程序。本专利技术提供一种iOS中的视图自动布局方法及装置,该方法通过获取根据约束描述规则所设置的目标视图的约束信息,根据所述约束信息可以直观看出目标视图设置的约束;同时,对目标视图的约束信息进行解析,根据解析结果实现目标视图的自动布局,提高了开发效率;此外,在对目标视图的布局进行修改时,只需要修改所述目标视图相应的约束信息,便于维护。附图说明图1为本专利技术实施例提供的iOS中的视图自动布局方法流程示意图;图2为本专利技术实施例提供的iOS中的视图自动布局装置结构示意图;图3为本专利技术实施例提供的iOS中的视图自动布局设备结构示意图。具体实施方式下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。以下实施例用于说明本专利技术,但不用来限制本专利技术的范围。在本专利技术的一个实施例中提供一种iOS中的视图自动布局方法,图1为本专利技术实施例提供的iOS中的视图自动布局方法流程示意图,该方法包括:S1,获取根据约束描述规则所设置的目标视图的约束信息;S2,对所述约束信息进行解析,根据解析结果对所述目标视图进行布局。具体地,S1中,所述约束描述规则用于展示视图之间的相对布局关系。所述目标视图为需要进行布局的视图。所述约束信息以描述性的方式展示对所述视图布局的约束。当需要对视图进行约束时,用户根据所述约束描述规则,在配置文件中设置所述目标视图的约束信息,实现了所述目标视图的业务逻辑和布局信息的分离。服务器获取所述约束信息。S2中,对所述目标视图的每条约束信息进行解析,将描述性的约束信息解析为对应的计算机可以识别运行的计算机程序。根据解析结果,获取所述目标视图的坐标和尺寸。使用所述目标视图的坐标和尺寸对所述目标视图进行布局。本实施例通过获取根据约束描述规则设置的目标视图的约束信息,根据所述约束信息可以直观看出目标视图设置的约束;同时,对目标视图的约束信息进行解析,根据解析结果实现目标视图的自动布局,提高了开发效率;此外,在对目标视图的布局进行修改时,只需要修改所述目标视图相应的约束信息,便于维护。在上述实施例的基础上,本实施例中所述步骤S1具体包括:使用所述约束描述规则中的线性方程或线性不等式构建所述目标视图的约束信息,所述约束信息包括所述目标视图、基准视图、所述目标视图和所述基准视图的属性、运算符号、关系符号和常数。具体地,在根据所述约束描述规则设置所述目标视图的约束信息之前,需要制定约束描述规则,具体包括:使用线性方程或线性不等式描述目标视图的约束信息。使用所述约束描述规则中的线性方程或线性不等式构建所述目标视图的约束信息。所述目标视图的布局以基准视图的布局为基准进行计算得到。所述基准视图一般为所述目标视图的相邻视图。所述约束信息为所述目标视图与所述基准视图之间的相对布局关系。所述约束信息包括所述目标视图、基准视图、所述目标视图和所述基准视图的属性、运算符号、关系符号和常数。例如,用线性方程veiwA.left=viewB.right*1+100描述所述目标视图veiwA的约束信息。所述线性方程描述的约束信息为所述目标视图veiwA的左边框在所述基准视图viewB的右边框向右移动100个点的位置,iOS中用点作为坐标单位。left和right分别表示veiwA的left属性,即左边框和viewB的right属性,即右边框。*的后面可以为任意实数,所述约束信息表示将所述基准视图viewB的right值乘以1,然本文档来自技高网...
一种iOS中的视图自动布局方法及装置

【技术保护点】
一种iOS中的视图自动布局方法,其特征在于,包括:S1,获取根据约束描述规则所设置的目标视图的约束信息;S2,对所述约束信息进行解析,根据解析结果对所述目标视图进行布局。

【技术特征摘要】
1.一种iOS中的视图自动布局方法,其特征在于,包括:S1,获取根据约束描述规则所设置的目标视图的约束信息;S2,对所述约束信息进行解析,根据解析结果对所述目标视图进行布局。2.根据权利要求1所述的方法,其特征在于,所述步骤S1具体包括:使用所述约束描述规则中的线性方程或线性不等式构建所述目标视图的约束信息,所述约束信息包括目标视图、基准视图、所述目标视图和所述基准视图的属性、运算符号、关系符号和常数。3.根据权利要求2所述的方法,其特征在于,所述步骤S2具体包括:对所述约束信息中的运算符号、关系符号、运算、目标视图的属性和基准视图的属性进行解析。4.根据权利要求1-3任一所述的方法,其特征在于,对所述约束信息进行解析之前还包括:构造第一函数,以解析所述线性方程中的和线性不等式中的关系符号;构造第二函数,以解析所述线性方程或线性不等式中目标视图的属性和基准视图的属性;构造第三函数,以解析所述线性方程或线性不等式中的运算符号;构造第四函数,以解析所述线性方程或线性不等式中的运算;构造第五函数,以调用所述第一函数、第二函数、第三函数和第四函数对所述约束信息进行解析。5.根据权利要求3所述的方法,其特征在于,对所述约束信息中的运算符号进行解析的步骤具体包括:将所述约束信息中的第一运算符号解析为将所述基准视图的属性值乘以预设常数;将所述约束信息中的第二运算符号解析为将所述基准视图的属性向右或向...

【专利技术属性】
技术研发人员:黄露洋陈少杰张文明
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1