网格与堆叠(Grid and Stack)
行(Row)和列(Column)把子级排成一条线。网格和堆叠覆盖另外两种常见模式:网格把子级放进由列和行组成的单元格,堆叠则把子级叠在同一空间里。
要使用其中一种,选中布局,并在 检查器(Inspector) 中把它的布局类型设为 网格(Grid) 或 堆叠(Stack)。参见布局类型。
网格(Grid)
网格布局把子级排进由列和行组成的单元格。当内容应在两个方向上对齐时使用网格,例如物品栏、照片库或卡片仪表盘。
新网格从一列一行开始。在 检查器(Inspector) 中添加列和行来搭出网格。选中网格时,舞台会显示每个单元格的参考线,以及单元格之间间隙的底纹。
设置列和行的尺寸(Sizing columns and rows)
每一列和每一行(也叫轨道)都有自己的尺寸。轨道使用与布局相同的缩放类型,作用于整列或整行:
- 填充(Fill): 轨道分得剩余空间的一份,以
fr(填充比例)为单位。三列都设为1fr时均分宽度,而2fr列占据的空间是1fr列的两倍。新轨道使用1fr。 - 固定(Fixed): 轨道有设定的宽度或高度,以点为单位,或为网格的百分比。
- 包裹(Hug): 轨道缩小或增长,以适合其中最大的子级。
拖拽轨道可重新排序。要同时编辑多条轨道,按住 Shift 并点击它们的轨道编号。
要在列和行之间留出空间,使用网格的间隙(gap)。水平间隙分隔列,垂直间隙分隔行。
把子级放进单元格(Placing children in cells)
子级按层级顺序放入网格。每一行从左到右填满,再进入下一行。
要控制子级放在哪里,选中该子级,使用 检查器(Inspector) 中的 网格单元格(Grid Cell) 选项:
- 单元格(Cell): 放置子级的列和行。默认情况下,子级会自动放进下一个可用单元格。
- 跨度(Span): 子级跨越的列数或行数。
当子级跨越多个单元格时,它后面的子级会移到接下来的可用单元格。如果子级多于单元格,Rive 会添加行来容纳它们。要控制这些额外行的尺寸,请自己把它们加到网格上并设置缩放类型。
要让子级填满整个单元格,把它的宽度和高度设为 填充(Fill)。
布局(Layout) 模式且设为 填充(Fill) 的组件实例会填满单元格,但不能使用 跨度(Span) 等网格单元格选项。要让组件跨单元格,把实例包进一个布局,将该布局的宽高设为 填充(Fill),再在这个布局上设置跨度。
为网格制作动画(Animating a Grid)
你可以为轨道尺寸、间隙,以及网格单元格的跨度和位置设置关键帧,从而让子级动画到新的单元格。列数和行数不能制作动画。
堆叠(Stack)
堆叠布局把所有子级放在同一空间里,彼此层叠。用堆叠制作由分层部件组成的东西,例如带背景、图稿和标签的卡片,或形状上叠着图标的按钮。
子级按层级顺序绘制。层级(Hierarchy) 中最上面的子级画在最前,最下面的子级画在最后。
设置层的尺寸和位置(Sizing and positioning layers)
每个子级的尺寸决定它覆盖堆叠的多少:
- 填充(Fill): 子级覆盖整个堆叠。用于背景,以及用自己的内边距和对齐来放置内容的层。
- 固定(Fixed) 或 包裹(Hug): 子级保持自己的尺寸,堆叠的对齐决定它放在哪里。
层遵循与行或列中的子级相同的尺寸规则。参见尺寸与定位。
大于堆叠的内容会按其对齐方式溢出。居中的堆叠向四边均匀溢出,对齐到左下的堆叠则向上和向右溢出。