Main Content

align

对齐 UIControl 组件和 Axes 对象

    说明

    注意

    App 设计工具或使用 uifigure 函数创建的 App 不支持 align 函数。请改用网格布局管理器来对齐 App 中的组件。有关详细信息,请参阅替代功能

    在列中对齐对象

    示例

    align(components,hloc,spacing) 在列中对齐指定的组件。该函数根据 hloc 的值对齐对象的左侧、中心或右侧,并根据 spacing 的值调整对象之间的垂直间距。例如,align(components,"left","none") 对齐左边缘,不调整间距。每个对象的大小不变。

    align(components,hloc,"fixed",distance) 将垂直间距调整为固定距离(以磅为单位)。

    在行中对齐对象

    align(components,spacing,vloc) 在行中对齐指定的组件。该函数根据 vloc 的值对齐对象的上侧、中间或下侧,并根据 spacing 的值调整对象之间的水平间距。例如,align(components,"none","top") 对齐上边缘,不调整间距。每个对象的大小不变。

    示例

    align(components,"fixed",distance,vloc) 将水平间距调整为固定距离(以磅为单位)。

    对齐重叠的对象

    示例

    align(components,hloc,vloc) 对齐彼此重叠的指定对象。这等效于根据 hloc 在列中对齐对象,并根据 vloc 在行中对齐对象。例如,align(components,"left","top") 对齐 components 中对象的左上角。

    返回计算出的位置

    示例

    如果指定对象对齐,则 positions = align(___) 以矩阵形式返回其计算出来的位置,但不移动对象。矩阵输出的每行均为一个位置向量。可将此选项与上述语法中的任何输入参量组合一起使用。

    示例

    如果对象对齐,则 positions = align(cpositions,___) 返回其位置包含在 cpositions 中的对象计算出来的位置,但对象在图窗上的位置不变。可将此选项与上述语法中的任何输入参数组合一起使用,用 cpositions 替换 components

    示例

    全部折叠

    创建一个图窗,其中包含不完全对齐的三个按钮。

    f = figure("Position",[100 100 350 200]);
    u1 = uicontrol(f,"Position",[10 80 60 30],"String","One");
    u2 = uicontrol(f,"Position",[50 50 60 30],"String","Two");
    u3 = uicontrol(f,"Position",[30 10 60 30],"String","Three");
    

    Figure window with three unaligned buttons

    在列中对齐按钮中心,并使按钮之间的垂直间距相等。在列中对齐对象时,请在对象间距前指定对齐参量。

    align([u1 u2 u3],"center","distribute");

    Figure window with three buttons in a column with equal vertical distance between each button

    创建一个图窗,其中包含不完全对齐的三个按钮。

    f = figure("Position",[100 100 350 200]);
    u1 = uicontrol(f,"Position",[43 50 75 30],"String","Yes");
    u2 = uicontrol(f,"Position",[143 75 75 30],"String","No");
    u3 = uicontrol(f,"Position",[233 40 75 30],"String","Cancel");

    Figure window with three unaligned buttons

    在列中对齐这些按钮的下边缘,并将按钮之间的水平间距设置为 10 磅。在行中对齐对象时,请在对齐参量前指定对象间距。

    align([u1 u2 u3],"fixed",10,"bottom");

    Figure window with three buttons in a row, with a distance of 10 pixels between each button

    创建一个图窗,其中包含一个按钮和一个坐标区对象。

    f = figure("Position",[100 100 350 200]);
    ax = axes(f);
    btn = uicontrol(f,"String","Click");

    Figure window with an axes object and a button in the lower-left corner

    将按钮的中心与坐标区的中心对齐。第二个参量 "center" 指定组件的哪些部分在列中对齐,第三个参量 "middle" 指定组件的哪些部分在行中对齐。

    align([ax btn],"center","middle");

    Figure window with an axes object and button in the center of the axes

    计算如果对象对齐的结束位置,但并不实际对齐它们。

    创建一个包含三个未对齐按钮的图窗。

    f = figure("Position",[100 100 350 200]);
    u1 = uicontrol(f,"Position",[130 25 75 30],"String","Yes");
    u2 = uicontrol(f,"Position",[35 60 75 30],"String","No");
    u3 = uicontrol(f,"Position",[200 160 75 30],"String","Cancel");

    Figure window with three unaligned buttons

    通过调用带输出参量的 align 来预测按钮对齐的结果。输出表示为矩阵,其行是按钮的预测位置向量。

    pos1 = align([u1 u2 u3],"right","fixed",3)
    pos1 =
    
       200    25    75    30
       200    59    75    30
       200    93    75    30

    或者,向 align 传递按钮的位置向量。

    pos2 = align([u1.Position;u2.Position;u3.Position],"right","fixed",3)
    pos2 =
    
       200    25    75    30
       200    58    75    30
       200    91    75    30

    在这两种情况下,产生的位置是相同的。这两个函数调用都不会更改图窗中按钮的位置。

    figure(f)

    Figure window with three unaligned buttons

    输入参数

    全部折叠

    要对齐的对象,指定为 UIControlAxes 对象的向量。如果向量包含 UIControlAxes 以外的类型的对象,则 align 函数会忽略它们。对齐对象不会更改其大小。

    components 中要在列中对齐的对象的水平位置,指定为 "left""center""right"。下表描述了每个选项。

    hloc

    结果

    "left"

    对齐对象的左边缘。

    Two rectangles with left edges aligned in a column

    "center"

    水平居中对齐对象。

    Two rectangles with horizontal centers aligned in a column

    "right"

    对齐对象的右边缘。

    Two rectangles with right edges aligned in a column

    所有对齐选项都会在围住对象的边界框内对齐对象。"left" 选项将对象的左边缘与包含这些对象的边界框的左边缘对齐,"right" 选项亦然。"center" 选项将对象的中心与边界框的中心对齐。

    对象之间的间距调整,指定为 "none""distribute"

    • "none" - 不更改对象之间的间距。在列中对齐对象时,请不要垂直移动它们。在行中对齐对象时,请不要水平移动它们。

    • "distribute" - 均匀分布对象。在列中对齐对象时,在包含这些对象的边界框的上下边缘之间垂直均匀分布对象。在行中对齐对象时,在包含这些对象的边界框的左右边缘之间水平均匀分布对象。

    components 中要在行中对齐的对象的垂直位置,指定为 "top""middle""bottom"

    halign

    结果

    "top"

    对齐对象的上边缘。

    Two rectangles with top edges aligned in a row

    "middle"

    垂直居中对齐对象。

    Two rectangles with horizontal middles aligned in a row

    "bottom"

    对齐对象的下边缘。

    Two rectangles with bottom edges aligned in a row

    所有对齐选项都会在围住对象的边界框内对齐对象。"top" 选项将对象的上边缘与包含这些对象的边界框的上边缘对齐,"bottom" 选项亦然。"middle" 选项将对象的中间与边界框的中间对齐。

    对象之间的固定距离,指定为标量,以磅为单位,其中 72 磅等于 1 英寸。

    当前对象位置,指定为其中的行是位置向量的矩阵。每个位置向量是一个四元素向量,以 [left bottom width height] 形式指定对象的位置和大小。所有位置向量测量值都以像素为单位。

    替代功能

    在 App 设计工具和使用 uifigure 函数创建的 App 中,使用网格布局管理器对齐组件。使用网格布局管理器,您可以在网格中布局 UI 组件。通过调用 uigridlayout 函数或在 App 设计工具中将网格布局组件拖到画布上来创建网格布局管理器。

    例如,要在图窗的左上角在列中对齐三个按钮,请创建一个网格布局管理器,其中包含四行两列。指定第一列和前三行进行缩放以适应它们包含的组件。然后,创建三个按钮,并将它们添加到第一列的前三行。

    fig = uifigure;
    fig.Position = [100 100 200 200];
    gl = uigridlayout(fig);
    gl.RowHeight = {'fit','fit','fit','1x'};
    gl.ColumnWidth = {'fit','1x'};
    
    btn1 = uibutton(gl);
    btn1.Layout.Row = 1;
    btn1.Layout.Column = 1;
    btn2 = uibutton(gl);
    btn2.Layout.Row = 2;
    btn2.Layout.Column = 1;
    btn3 = uibutton(gl);
    btn3.Layout.Row = 3;
    btn3.Layout.Column = 1;
    

    Figure window with three buttons stacked vertically in the upper-left corner

    或者,在 App 设计工具中,使用画布选项卡中的空间选项在设计视图中对齐组件。有关详细信息,请参阅在 App 设计工具的设计视图中布局 App

    版本历史记录

    在 R2012b 中推出

    另请参阅

    | |