视图布局方法、装置、电子设备及存储介质与流程

    专利查询2023-07-09  104



    1.本公开涉及ios开发技术领域,更具体地,涉及一种视图布局方法、 装置、电子设备及计算机可读存储介质。


    背景技术:

    2.在ios界面开发中,一般通过frame布局或者autolayout布局实现多 个视图(view)的线性排列布局,其中,frame布局是指通过设置视图的 坐标和尺寸大小来实现布局,autolayout布局是指通过描述视图间布局关 系的约束集合来实现布局。
    3.目前,为了能够以简洁的编码实现视图的动态展示,开发人员一般是 基于ios提供的、基于autolayout布局实现的原生控件uistackview,或 者是基于对uistackview改造后的stackview控件进行视图布局。
    4.然而,uistackview控件或者stackview控件均是基于autolayout布 局实现,其虽然能够以简洁的编码实现视图的动态展示,但是一方面存在 版本限制,即,在ios11以下的版本中并不支持视图的自定义间距,普适 性较差;另一方面,由于其基于视图间布局关系进行视图布局,所以在效 率上也远低于frame布局方式。


    技术实现要素:

    5.本公开实施例提供了一种视图布局方法、装置、电子设备及存储介质, 可以在支持设置视图的自定义间距的同时,简洁、高效的实现视图的自适 应重新布局。
    6.本公开的第一方面,提供了一种视图布局方法,该方法包括:
    7.接收针对目标视图的目标触发事件;
    8.响应于所述目标触发事件,获取第一子视图信息集合,其中,所述子 视图信息集合包括与所述目标视图中每一子视图分别对应的子视图信息, 所述子视图信息包括对应子视图的自定义间距;
    9.根据所述第一子视图信息集合,基于frame布局对所述目标视图进行 重新布局。
    10.本公开的第二方面,还提供了一种视图布局装置,包括:
    11.接收模块,用于接收针对目标视图的目标触发事件;
    12.子视图信息集合获取模块,用于响应于所述目标触发事件,获取第一 子视图信息集合,其中,所述子视图信息集合包括与所述目标视图中每一 子视图分别对应的子视图信息,所述子视图信息包括对应子视图的自定义 间距;
    13.布局模块,用于根据所述第一子视图信息集合,基于frame布局机制 对所述目标视图进行重新布局。
    14.本公开的第三方面,还提供了一种电子设备,包括:
    15.存储器,用于存储可执行的指令;
    16.处理器,用于根据所述可执行的指令的控制,运行所述电子设备执行 根据本公开的第一方面所述的视图布局方法。
    17.本公开的第四方面,还提供了一种计算机可读存储介质,所述计算机 可读存储介质存储有可被计算机读取执行的计算机程序,所述计算机程序 用于在被所述计算机读取运行时,执行根据本公开的第一方面所述的视图 布局方法。
    18.本公开的有益效果在于,根据本公开的实施例,在接收到针对目标视 图的目标触发事件之后,响应于该目标触发事件,获取由该目标视图中每 一子视图分别对应的、包含对应子视图的自定义间距的子视图信息构成的 第一子视图信息集合,并根据该第一子视图信息集合,基于frame布局机 制对目标视图进行重新布局,使得可以在所有ios系统上均支持设置视图 之间的自定义间距;同时,由于是基于frame布局机制对目标视图中的各 子视图进行重新布局,还可以在兼顾编码简洁性的同时高效的实现视图布 局。
    19.通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其 他特征及其优点将会变得清楚。
    附图说明
    20.被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施 例,并且连同其说明一起用于解释本公开的原理。
    21.图1是本公开实施例提供的目标视图相较于现有视图控件的对比示意 图。
    22.图2是本公开实施例的目标视图提供的外部接口示意图。
    23.图3是本公开实施例提供的视图布局方法的流程示意图。
    24.图4是本公开实施例提供的设置子视图初始尺寸的流程示意图。
    25.图5是本公开实施例提供的视图布局应用示意图。
    26.图6是本公开实施例提供的视图布局装置的原理框图。
    27.图7是本公开实施例提供的电子设备的硬件结构示意图。
    具体实施方式
    28.现在将参照附图来详细描述本公开的各种示例性实施例。应注意到: 除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、 数字表达式和数值不限制本公开的范围。
    29.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作 为对本公开及其应用或使用的任何限制。
    30.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨 论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
    31.在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例 性的,而不是作为限制。因此,示例性实施例的其他例子可以具有不同的 值。
    32.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一 旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步 讨论。
    33.《方法实施例》
    34.针对现有在基于ios系统提供的原生控件uistackview进行视图布局 时,所存在的普适性差以及不够高效的问题,本公开的实施例提供了一种 基于目标视图,即,spaceslinearlayout的视图布局方法,请参看图1,其 是本公开实施例提供的目标视图相
    较于现有视图控件的对比示意图,现有 uistackview通常具有以下属性:轴向(axis)、对齐(alignment)、分布 (distribution)、间距(space)且是基于autolayout布局实现的,然而, 就其属性间距而言,在uistackview中,其所有子视图之间的间距通常是 相等的,虽然在ios11以上的版本中增加了对自定义间距的支持,但在 ios11以下的版本中该视图并不支持设置视图的自定义间距;本公开实施 例提供的目标视图,也即spaceslinearlayout,其一方面具备原生控件 uistackview的所有既有属性,同时,还支持在所有ios系统上设置视图 的自定义间距,且是基于frame布局实现,因此,可以更为高效的进行视 图布局。
    35.具体地,本公开的实施例提供的目标视图,即spaceslinearlayout分 别具有以下属性:1、axis,即水平轴向和垂直轴向;2、aligment,具体包 括三种对齐模式,分别为:第一预设对齐模式、第二预设对齐模式和第三 预设对齐模式,其中,第一预设对齐模式可以为头部(leading)对齐模式, 第二预设对齐模式可以为居中(center)对齐模式,第三预设对齐模式可以 为填充(fill)对齐模式;3、distribution,具体包括三种排布模式,分别为: 第一预设排布模式、第二预设排布模式和第三预设排布模式,其中,第一 预设排布模式可以为对等填充(fillequally)模式,第二预设排布模式可以 为填充(fill)模式,第三预设排布模式可以为自然(natural)模式。
    36.另外,请参看图2,其是本公开实施例的目标视图提供的外部接口示 意图。如图2所示,接口a和接口b分别为添加视图的接口,两者之间的 区别在于接口a未指定自定义间距,因此会使用默认的间距;而接口b指 定了间距,即参数previousspace,因此,添加的视图会使用指定的自定义 间距;接口c和d为在指定位置(index),插入视图的接口,该两者之间 的区别同上述接口a和b,此处不再赘述;另外,接口e为移除指定视图的 接口,接口f为用于移除目标视图中所有子视图的接口。
    37.请参看图3,其是本公开实施例提供的视图布局方法的流程示意图, 该方法可以应用于提供ios界面开发服务或者运行有ios系统的电子设备 中,该电子设备可以为终端设备也可以为服务器,此处不作特殊限定。
    38.如图3所示,本实施例的方法可以包括如下步骤s3100-s3300,以下结 合图3,对如何基于本公开实施例提供的目标视图,即spaceslinearlayout 以在ios系统中实现高效的视图布局予以详细说明。
    39.步骤s3100,接收针对目标视图的目标触发事件。
    40.目标触发事件,是指触发目标视图进行重新布局的事件,在本公开的 实施例中,该目标触发事件可以为以下任意一项:1、指示所述目标视图和 /或所述目标视图中的任一子视图的属性信息发生第一预设变化的事件;2、 指示所述目标视图中的子视图数量发生第二预设变化的事件;3、所述目标 视图以外的其他对象发起的、用于更新所述目标视图中的任一子视图的属 性信息的事件。
    41.该第一预设变化,可以是目标视图和/或目标视图中的任一子视图的属 性信息所发生的任意变化,例如,可以是目标视图的axis、alignment或 distribution等属性发生的任意变化。该第二预设变化可以为目标视图中子 视图数量所发生的任意变化,例如,可以是在接收到其他对象基于图2所 示的接口a~f中的任意一项对子视图数量进行操作的情况下,触发目标视 图进行重新布局。
    42.具体地,在本公开的实施例中,目标视图可以在检测到其自身属性信 息或者其包
    合,对目标视图进行重新布局。
    51.具体地,在针对目标视图中的各子视图进行重新布局之前,由于某些 子视图可能为透明显示,或者为隐藏显示,又或者其平行于轴方向的大小 为0,因此,该类子视图通常并不会占用目标视图中的显示空间,也不会 影响其他子视图的排布和对齐,所以该类子视图可以不必参与进行重新布 局,因此,在对目标视图进行重新布局之前,可以先根据获取到的第一子 视图信息集合,对不参与重新布局的子视图的子视图信息进行过滤处理, 以获得由参与重新布局的全部子视图的子视图信息构成的第二子视图信息 集合,并基于该第二子视图信息集合,通过对参与重新布局的全部子视图 的尺寸以及显示位置进行重新设置,以实现对目标视图的重新布局。
    52.在一个实施例中,所述根据第二子视图信息集合,对目标视图进行重 新布局,包括:根据第二子视图信息集合,设置目标视图中参与重新布局 的全部子视图的初始尺寸;获取目标视图的排布模式、对齐模式和目标视 图的总尺寸;根据该排布模式、该总尺寸和该初始尺寸,重新设置全部子 视图中每一子视图的尺寸,以获得所述全部子视图的目标尺寸;根据该对 齐模式,设置所述全部子视图的位置信息;根据该目标尺寸和该位置信息, 对所述全部子视图进行布局,以完成对目标视图的重新布局。
    53.请参看图4,其是本公开实施例提供的设置子视图初始尺寸的流程示 意图,如图4所示,该处理具体包括以下步骤:步骤s4100,从第二子视 图信息集合中,获取第一子视图的第一子视图信息,其中,第一子视图为 参与重新布局的全部子视图中的任意一子视图;根据该第一子视图信息, 确定该第一子视图的尺寸是否为外部指定尺寸,若是,则执行步骤s4200, 将所述第一子视图的第一初始尺寸设置为所述外部指定尺寸;若否,则根 据所述第一子视图信息,确定所述第一子视图的固有尺寸是否大于预设数 值,若是,则执行步骤s4300,将所述第一初始尺寸设置为所述固有尺寸; 若否,则执行步骤s4400,基于与所述目标是图对应的预设约束计算获得 所述第一初始尺寸;以及,根据该第一初始尺寸,设置目标视图中参与重 新布局的全部子视图的初始尺寸。
    54.该外部指定尺寸为外部对象,即目标视图以外的其他对象为对应子视 图设置的尺寸。
    55.具体地,由于该方法是给予frame布局实现目标视图的重新布局,因 此,若目标视图中子视图的尺寸以被外部对象,即,目标视图以外的其他 对象设置过尺寸,例如,设置过其frame,则直接将该frame的大小作为该 子视图的尺寸即可,即,将frame.size作为该子视图的初始尺寸。如果子视 图未被外部对象设置过尺寸,则需要判断该子视图的固有尺寸,即固有大 小(intrinsticcontentsize)是否大于预设数值,若大于,则可以直接将该固 有尺寸作为子视图的初始尺寸,否则,则需要基于该目标视图的预设约束 计算每一子视图的最优尺寸作为其初始尺寸,其中,该预设数值可以为0, 或者,也可以为其他数值,此处不作特殊限定。
    56.根据上述说明可知,目标视图可以包括三种预设排布模式,具体可以 为第一预设排布模式,即fillequally模式,第二预设排布模式,即fill模式, 以及第三预设排布模式,natural模式,因此,在确定参与重新布局的全部 子视图的初始尺寸之后,还需要根据目标视图的排布模式,目标视图的总 尺寸,重新对各子视图进行排布处理,以使得其大小可以适应目标视图的 总尺寸,以下针对在不同排布模式下,如何设置各子视图的大小进行说
    明。
    57.在一个实施例中,所述根据排布模式、总尺寸和初始尺寸,重新设置 全部子视图中每一子视图的尺寸,以获得全部子视图的目标尺寸,包括: 在该排布模式为第一预设模式的情况下,根据第二子视图信息集合,获得 目标子视图的自定义间距的第一和值,其中,该目标子视图为全部子视图 中、除目标视图的首位子视图以外的子视图;计算该总尺寸与该第一和值 的差值;在该差值不小于预设数值的情况下,获取参与重新布局的全部子 视图的数量,将该差值与该数量的除值作为该目标尺寸;以及,在该差值 小于该预设数值的情况下,将该目标尺寸设置为该预设数值。
    58.首位子视图,是指排布顺序位于目标视图的首位,即,最前面位置的 子视图,处于布局美观考虑,通常位于目标视图的首位的子视图的自定义 间距不生效。
    59.具体地,以s
    t
    表示目标视图的总尺寸,s1表示该第一和值,以δd1表示 该差值,则可得δd1=s
    t-s1;在具体实施时,在计算得到δd1之后,即可得到 目标视图中去掉所有子视图的自定义间距之后的剩余空间的大小,之后, 参与重新布局的子视图均分该剩余空间即可;当然,若均分后得到的尺寸 小于预设数值,例如,小于0,则为了避免出错,直接将每一子视图的目 标尺寸设置为该预设数值,例如,设置为0即可。
    60.在一个实施例中,所述根据排布模式、总尺寸和初始尺寸,重新设置 全部子视图中每一子视图的尺寸,以获得全部子视图的目标尺寸,包括: 在该排布模式为第二预设模式的情况下,根据第二子视图信息集合,获得 参与重新布局的目标子视图的自定义间距的第一和值,其中,该目标子视 图为所述全部子视图中、除目标视图的首位子视图以外的子视图;获取全 部子视图的初始尺寸和第一和值的第二和值;根据该第二和值和该总尺寸, 重新设置全部子视图中每一子视图的尺寸,以获得全部子视图的目标尺寸。
    61.具体地,所述根据第二和值和总尺寸,重新设置全部子视图中每一子 视图的尺寸,以获得全部子视图的目标尺寸,包括:在第二和值与总尺寸 不相等的情况下,根据全部子视图中每一子视图对应的尺寸变化优先级顺 序,对全部子视图依次进行尺寸变化处理,并在依次进行尺寸变化处理的 过程中,根据对应子视图变换后的尺寸,更新第二和值;在更新后的第二 和值等于总尺寸的情况下,停止尺寸变换处理,并将全部子视图的当前尺 寸作为目标尺寸;其中,所述尺寸变换处理包括尺寸拉伸子处理和尺寸压 缩子处理。
    62.在该实施例中,以s
    t
    表示目标视图的总尺寸,s2表示该第二和值,则 所述在第二和值与总尺寸不相等的情况下,根据全部子视图中每一子视图 对应的尺寸变化优先级顺序,对全部子视图依次进行尺寸变化处理,包括: 在s
    t
    小于s2的情况下,根据全部子视图中每一子视图对应的压缩优先级顺 序,对全部子视图依次进行压缩处理;以及,在s
    t
    大于s2的情况下,根据 全部子视图中每一子视图对应的拉伸优先级顺序,对全部子视图依次进行 拉伸处理。
    63.具体地,可以在目标视图的总尺寸小于全部子视图的初始尺寸与其自 定义间距的第二和值的情况下,根据预先为每一子视图设置的压缩优先级 顺序,依次对每一子视图进行压缩处理,至更新后的第二和值与该总尺寸 相等,即,拉伸处理后的全部子视图可以自适应填充至整个目标视图中; 而在目标视图的总尺寸大于第二和值的情况下,则根据预先为每一子视图 设置的拉伸优先级顺序,对每一子视图进行拉伸处理,通常,只需要对拉 伸优先级排序第一的子视图直接进行拉伸,至更新后的第二和值与总尺寸 相等即可。
    64.另外,所述根据排布模式、总尺寸和初始尺寸,重新设置全部子视图 中每一子视图的尺寸,以获得全部子视图的目标尺寸,包括:在排布模式 为第三预设模式的情况下,直接将全部子视图的初始尺寸作为所述目标尺 寸。即,在目标视图的排布模式为natural的情况下,不需要对每一子视图 的尺寸进行特殊处理,保持其初始尺寸作为最终尺寸即可。
    65.在经过以上步骤完成对目标视图中参与重新布局的全部子视图的尺寸 自适应设置之后,所述根据所述对齐模式,设置全部子视图的位置信息, 包括:根据对齐模式,对全部子视图进行对齐处理,并对应设置每一子视 图垂直于轴向的大小,以设置所述全部子视图的位置信息。
    66.具体地,可以根据目标视图的对齐模式,即,对参与重新布局的所有 子视图进行对齐处理,并将对齐处理后的坐标数据作为对应子视图的位置 信息,在进行对齐的过程中,可以同时调整子视图垂直于轴向,即axis的 大小,具体可以在目标视图的对齐模式为填充模式,即fill模式的情况下, 调整每一子视图垂直于轴向的大小为该目标视图的大小,否则则不进行调 整;另外,还可以在目标视图为水平从右到左排布的情况下,对每一子视 图的水平坐标进行适配处理,其具体处理此处不再赘述。
    67.在根据目标视图的排布模式和对齐模式,分别自适应的设置参与重新 布局的每一子视图的目标尺寸和位置信息之后,即可基于该目标尺寸和该 位置信息,基于ios系统的frame布局的接口依次对每一子视图进行布局, 在完成首位子视图的布局之后,根据下一子视图的自定义间距以及其目标 尺寸和位置信息,分别对每一子视图进行布局,即可完成对目标视图的重 新布局。
    68.请参看图5,其是本公开实施例提供的视图布局应用示意图,如图5 中黑色实体框中内容所示,在垂直方向上其包含多个视图元素且彼此之间 的间距是不相等的,并且,由于为直播场景,其展示的视图元素也是根据 服务器下发的配置而动态确定的,这就使得若基于原生控件uistackview 实现该种场景下的视图布局,则在显示每帧画面时,均需要基于服务器下 发的配置确定视图元素是否需要展示,并根据展示的视图元素重新定义其 间距,这一方面对ios系统的版本有要求,还需要较为复杂的业务处理逻 辑,而基于本公开实施例提供的视图布局方法,可以在所有ios系统下进 行处理,另一方面只需要根据视图元素被更新后的属性信息,自适应的进 行重新布局即可,从而使得可以以较简洁的编码、高效的实现视图布局。
    69.综上所述,本公开实施例提供的基于目标视图,即spacelinerlayout 的视图布局方法,与ios系统中原生的uistackview布局方法相比,其一 方面普适性较强,即,满足在所有ios系统中对设置视图的自定义间距; 另一方面,由于本实施了提供的方法是基于frame布局进行视图布局,所 以相对于基于autolayout布局的uistackview,其具备更高的布局效率; 此外,在需要动态控制展示视图的场景,例如,直播视频展示场景中,基 于该方法进行视图布局,可以使得编码更简洁,更易于维护和进行迭代开 发。
    70.《装置实施例》
    71.与上述实施例相对应,在本实施例中,还提供一种视图布局装置,如 图6所示,该装置600可以包括接收模块610、子视图信息集合获取模块 620和布局模块630。
    72.该接收模块610,用于接收针对目标视图的目标触发事件;该子视图 信息集合获取模块620,用于响应于所述目标触发事件,获取第一子视图 信息集合,其中,所述子视图
    信息集合包括与所述目标视图中每一子视图 分别对应的子视图信息,所述子视图信息包括对应子视图的自定义间距; 该布局模块630,用于根据所述第一子视图信息集合,基于frame布局机 制对所述目标视图进行重新布局。
    73.《设备实施例》
    74.在本实施例中,还提供一种电子设备,如图7所示,该电子设备700 还可以包括处理器720和存储器710,该存储器710用于存储可执行的指 令;该处理器720用于根据指令的控制运行电子设备以执行根据本公开任 意实施例的视图布局方法。
    75.《介质实施例》
    76.与上述方法实施例对应,在本实施例中,还提供一种计算机可读存储 介质,该计算机可读存储介质存储有可被计算机读取并运行的计算机程序, 所述计算机程序用于在被所述计算机读取运行时,执行如本公开以上任意 实施例所述的视图布局方法。
    77.附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法 和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程 图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述 模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的 可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不 同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并 行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。 也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的 方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实 现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人 员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和 硬件结合的方式实现都是等价的。
    78.以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽 性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范 围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更 都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原 理、实际应用或对市场中的技术改进,或者使本技术领域的其他普通技术 人员能理解本文披露的各实施例。本公开的范围由所附权利要求来限定。

    技术特征:
    1.一种视图布局方法,其特征在于,包括:接收针对目标视图的目标触发事件;响应于所述目标触发事件,获取第一子视图信息集合,其中,所述子视图信息集合包括与所述目标视图中每一子视图分别对应的子视图信息,所述子视图信息包括对应子视图的自定义间距;根据所述第一子视图信息集合,基于frame布局对所述目标视图进行重新布局。2.根据权利要求1所述的方法,其特征在于,所述子视图信息还包括布局参与标识,所述布局参与标识根据对应子视图的透明度信息、隐藏信息和轴向平行大小信息中的至少一项确定;所述根据所述第一子视图信息集合,基于frame布局机制对所述目标视图进行重新布局,包括:对所述第一子视图信息集合中对应布局参与标识为第一标识信息的子视图信息进行过滤处理,获得第二子视图信息集合,其中,所述第一标识信息表示对应子视图不参与重新布局;根据所述第二子视图信息集合,对所述目标视图进行重新布局。3.根据权利要求2所述的方法,其特征在于,所述根据所述第二子视图信息集合,对所述目标视图进行重新布局,包括:根据所述第二子视图信息集合,设置所述目标视图中参与重新布局的全部子视图的初始尺寸;获取所述目标视图的排布模式、对齐模式和所述目标视图的总尺寸;根据所述排布模式、所述总尺寸和所述初始尺寸,重新设置全部子视图中每一子视图的尺寸,以获得所述全部子视图的目标尺寸;根据所述对齐模式,设置所述全部子视图的位置信息;根据所述目标尺寸和所述位置信息,对所述全部子视图进行布局,以完成对所述目标视图的重新布局。4.根据权利要求3所述的方法,其特征在于,所述根据所述第二子视图信息集合,设置所述目标视图中参与重新布局的全部子视图的初始尺寸,包括:从所述第二子视图信息集合中,获取第一子视图的第一子视图信息,其中,所述第一子视图为参与重新布局的全部子视图中的任意一子视图;根据所述第一子视图信息,确定所述第一子视图的尺寸是否为外部指定尺寸,若是,则将所述第一子视图的第一初始尺寸设置为所述外部指定尺寸;若否,则根据所述第一子视图信息,确定所述第一子视图的固有尺寸是否大于预设数值,若是,则将所述第一初始尺寸设置为所述固有尺寸;若否,则基于与所述目标是图对应的预设约束计算获得所述第一初始尺寸;根据所述第一初始尺寸,设置所述目标视图中参与重新布局的全部子视图的初始尺寸。5.根据权利要求3所述的方法,其特征在于,所述排布模式包括第一预设排布模式;所述根据所述排布模式、所述总尺寸和所述初始尺寸,重新设置全部子视图中每一子视图的尺寸,以获得所述全部子视图的目标尺寸,包括:
    在所述排布模式为所述第一预设模式的情况下,根据所述第二子视图信息集合,获得目标子视图的自定义间距的第一和值,其中,所述目标子视图为所述全部子视图中、除所述目标视图的首位子视图以外的子视图;计算所述总尺寸与所述第一和值的差值;在所述差值不小于预设数值的情况下,获取参与重新布局的全部子视图的数量,将所述差值与所述数量的除值作为所述目标尺寸;以及,在所述差值小于所述预设数值的情况下,将所述目标尺寸设置为所述预设数值。6.根据权利要求3所述的方法,其特征在于,所述排布模式包括第二预设排布模式;所述根据所述排布模式、所述总尺寸和所述初始尺寸,重新设置全部子视图中每一子视图的尺寸,以获得所述全部子视图的目标尺寸,包括:在所述排布模式为所述第二预设模式的情况下,根据所述第二子视图信息集合,获得参与重新布局的目标子视图的自定义间距的第一和值,其中,所述目标子视图为所述全部子视图中、除所述目标视图的首位子视图以外的子视图;获取所述全部子视图的初始尺寸和所述第一和值的第二和值;根据所述第二和值和所述总尺寸,重新设置全部子视图中每一子视图的尺寸,以获得所述全部子视图的目标尺寸。7.根据权利要求6所述的方法,其特征在于,所述根据所述第二和值和所述总尺寸,重新设置全部子视图中每一子视图的尺寸,以获得所述全部子视图的目标尺寸,包括:在所述第二和值与所述总尺寸不相等的情况下,根据所述全部子视图中每一子视图对应的尺寸变化优先级顺序,对所述全部子视图依次进行尺寸变化处理,并在依次进行所述尺寸变化处理的过程中,根据对应子视图变换后的尺寸,更新所述第二和值;在所述更新后的第二和值等于所述总尺寸的情况下,停止所述尺寸变换处理,并将所述全部子视图的当前尺寸作为所述目标尺寸;其中,所述尺寸变换处理包括尺寸拉伸子处理和尺寸压缩子处理。8.根据权利要求3所述的方法,其特征在于,所述排布模式包括第三预设排布模式;所述根据所述排布模式、所述总尺寸和所述初始尺寸,重新设置全部子视图中每一子视图的尺寸,以获得所述全部子视图的目标尺寸,包括:在所述排布模式为所述第三预设模式的情况下,直接将所述全部子视图的初始尺寸作为所述目标尺寸。9.根据权利要求3所述的方法,其特征在于,所述根据所述对齐模式,设置所述全部子视图的位置信息,包括:根据所述对齐模式,对所述全部子视图进行对齐处理,并对应设置每一子视图垂直于轴向的大小,以设置所述全部子视图的位置信息。10.根据权利要求1所述的方法,其特征在于,所述目标触发事件包括以下至少一项:指示所述目标视图和/或所述目标视图中的任一子视图的属性信息发生第一预设变化的事件;指示所述目标视图中的子视图数量发生第二预设变化的事件;所述目标视图以外的其他对象发起的、用于更新所述目标视图中的任一子视图的属性信息的事件。
    11.一种视图布局装置,其特征在于,包括:接收模块,用于接收针对目标视图的目标触发事件;子视图信息集合获取模块,用于响应于所述目标触发事件,获取第一子视图信息集合,其中,所述子视图信息集合包括与所述目标视图中每一子视图分别对应的子视图信息,所述子视图信息包括对应子视图的自定义间距;布局模块,用于根据所述第一子视图信息集合,基于frame布局机制对所述目标视图进行重新布局。12.一种电子设备,其特征在于,包括:存储器,用于存储可执行的指令;处理器,用于根据所述指令的控制运行所述电子设备执行如权利要求1-10任意一项所述的视图布局方法。13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有可被计算机读取执行的计算机程序,所述计算机程序用于在被所述计算机读取运行时,执行根据权利要求1-10中任意一项所述的视图布局方法。

    技术总结
    本申请公开了一种视图布局方法、装置、电子设备及存储介质,该方法包括:接收针对目标视图的目标触发事件;响应于所述目标触发事件,获取第一子视图信息集合,其中,所述子视图信息集合包括与所述目标视图中每一子视图分别对应的子视图信息,所述子视图信息包括对应子视图的自定义间距;根据所述第一子视图信息集合,基于Frame布局对所述目标视图进行重新布局。该方法可以在支持设置视图的自定义间距的同时,简洁、高效的实现视图的自适应重新布局。局。局。


    技术研发人员:唐炎
    受保护的技术使用者:百果园技术(新加坡)有限公司
    技术研发日:2022.02.11
    技术公布日:2022/5/25
    转载请注明原文地址:https://tc.8miu.com/read-17444.html

    最新回复(0)