Xamarin ios如何根据superview添加约束

时间:2018-06-06 10:17:27

标签: ios xamarin constraints

我们如何根据superview添加约束:

我有两个子视图应该是其超视图的一半,我如何根据其超视图添加约束。

Superview:buttonContainer

子视图:phoneButton,greyVerticalLine,directionButton。

buttonContainer的Superview:contentContainer。

contentContainer的Superview:scrollContainer(UIScroll View)。

scrollContainer的Superview:UIView(主视图)。

使用以下层次结构添加约束:

buttonContainer.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();

 buttonContainer.AddConstraints(

    phoneButton.AtTopOf(buttonContainer),
    phoneButton.AtLeftOf(buttonContainer),
    phoneButton.Width().EqualTo(),
    phoneButton.Height().GreaterThanOrEqualTo(42),

    greyVerticalLine.AtTopOf(buttonContainer),
    greyVerticalLine.ToRightOf(phoneButton),
    greyVerticalLine.Width().EqualTo(1),
    greyVerticalLine.Height().GreaterThanOrEqualTo(43),

    directionButton.AtTopOf(buttonContainer),
    directionButton.AtRightOf(buttonContainer),
    directionButton.Width().EqualTo(),
    directionButton.Height().GreaterThanOrEqualTo(42)

   );

期望:我想将buttonButton和directionButton的宽度设置为buttonContainer的一半。

如何访问buttonContainer的宽度?

1 个答案:

答案 0 :(得分:0)

在Xamarin中你可以做的一件事就是在iOS中约束你的布局就是使用带有自定义行或列定义的Grid。请考虑以下事项。

<Grid>
      <Grid.RowDefinitions>
           <RowDefinition />
           <RowDefinition />
      </Grid.RowDefinitions>
</Grid>

使用Grid.Row =&#34; 1&#34;声明项目时和Grid.Row =&#34; 2&#34;在网格中你会看到两者都占据了网格高度的50%。如果您想以不同方式划分空间,可以执行以下操作。

<Grid>
      <Grid.RowDefinitions>
           <RowDefinition Height="4*"/>
           <RowDefinition Height="6*"/>
      </Grid.RowDefinitions>
</Grid>

将网格高度的40%分配给第一行,将60%分配给第二行。

您甚至可以使用常数来表示身高而不是相对值。您可以使用列定义执行相同的操作。