与 UIListLayout 相比,UIGridLayout 和 UITableLayout 允许更多结构化和组织化的布局。这些最适合用于诸如商店库存的界面,在这种情况下,每个项目可以在均匀大小的网格瓦片中展示,或者项目可以被归类为相关的行/列。
网格布局
UIGridLayout 在其父容器内以统一大小的网格单元排列同级的 GuiObjects。单元格根据布局的 FillDirection 以行或列的方式添加,直到下一个单元不适合,然后开始新的一行或新的一列。为了进一步控制,您可以使用 FillDirectionMaxCells 属性设置每行或每列的最大单元格数量。


默认情况下,UIGridLayout 按照同级 GuiObjects 的 LayoutOrder 排序,其中较低的值在较高的值之前,而相等的值则根据您添加它们的顺序进行排序。如果您将布局的 SortOrder 更改为 Enum.SortOrder.Name,则同级将按字母顺序排序。
表格布局
UITableLayout 将同级 GuiObjects 及其子对象排列成表格格式。默认的 FillDirection 为 Vertical,这意味着同级首先被排列成行,这些同级的子对象则水平排列以形成列,从而使每行中的每个单元格具有相同的高度,每列中的每个单元格具有相同的宽度。


这种模式模仿标准的 HTML 行/列结构:
<table><tbody><tr><!-- 行1 --><td>标签1</td> <!-- TextLabel1 --><td>标签2</td> <!-- TextLabel2 --><td>标签3</td> <!-- TextLabel3 --></tr><tr><!-- 行2 --><td>标签4</td> <!-- TextLabel4 --><td>标签5</td> <!-- TextLabel5 --><td>标签6</td> <!-- TextLabel6 --></tr><tr><!-- 行3 --><td>标签7</td> <!-- TextLabel7 --><td>标签8</td> <!-- TextLabel8 --><td>标签9</td> <!-- TextLabel9 --></tr></tbody></table>
除非您启用布局的 FillEmptySpaceColumns 或 FillEmptySpaceRows 属性,否则同级 GuiObjects 的大小决定单元格的维度。例如,大小为 UDim2.new(0.25, 0, 0.1, 0) 的 TextLabel 将在父容器内创建一个宽度为 25% 和高度为 10% 的表格单元格。