![](/img/trans.png)
[英]in Xamarin How to change frame of superview when constraints are added to subviews programatically?
[英]Xamarin ios How to add constraints as per 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)
);
期望值:我想将buttonContainer的phoneButton和directionButton宽度设置为一半。
如何访问buttonContainer的宽度?
在Xamarin中,您可以执行类似于约束iOS布局的一件事,即使用带有自定义行或列定义的Grid。 考虑以下。
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
</Grid>
在网格内部使用Grid.Row =“ 1”和Grid.Row =“ 2”声明项目时,您会看到两者正好占据了网格高度的50%。 如果要以不同的方式划分空间,可以执行以下操作。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="4*"/>
<RowDefinition Height="6*"/>
</Grid.RowDefinitions>
</Grid>
它将网格高度的40%分配给第一行,将60%分配给第二行。
您甚至可以为高度使用常数而不是相对值。 您可以对“列定义”进行相同的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.