在 Xamarin 如何以编程方式将约束添加到子视图时更改超级视图的框架?

in Xamarin How to change frame of superview when constraints are added to subviews programatically?

顶视图:超级视图, 顶视图中的子视图:confirmImage、confirmationInfoView、visitLabelContainer、noteTextLabel、dashboardButton。

contentContainer : TopView 的超级视图

添加到顶视图的约束:

topView.AtLeftOf(contentContainer),
topView.AtRightOf(contentContainer),
topView.AtTopOf(contentContainer),
topView.Height().EqualTo(444),

约束已添加到 topView 的子视图:

topView.AddConstraints(

confirmImage.WithSameCenterX(topView),
confirmImage.AtTopOf(topView, 27),
confirmImage.Width().EqualTo(94),
confirmImage.Height().EqualTo(94),

confirmationInfoView.Below(confirmImage, 28),
confirmationInfoView.WithSameCenterX(topView),
confirmationInfoView.Width().EqualTo(284),
confirmationInfoView.Height().EqualTo(116),

visitLabelContainer.Below(confirmationInfoView, 3),
visitLabelContainer.WithSameCenterX(topView),
visitLabelContainer.Width().EqualTo(138),
visitLabelContainer.Height().EqualTo(19),

noteTextLabel.AtBottomOf(topView, 29),
noteTextLabel.WithSameCenterX(topView),
noteTextLabel.Width().EqualTo(343),
noteTextLabel.Height().EqualTo(36),

dashboardButton.AtBottomOf(topView, 87),
dashboardButton.WithSameCenterX(topView),
dashboardButton.Width().EqualTo(347),
dashboardButton.Height().EqualTo(44)

);

如果我改变顶视图的框架高度,它不会改变任何东西。 如果我更改顶视图的边界高度,它会将 frame 'y' 更改为负值。 (身高的一半)。

任何人都可以建议我如何在启用约束时更改 xamarin 中的框架。

提前致谢。

既然你已经使用自动布局来放置你的控件,你应该修改 改变顶视图高度的高度约束:

foreach (var constraint in contentContainer.Constraints)
{
    if (constraint.FirstItem == topView && constraint.FirstAttribute == NSLayoutAttribute.Height)
    {
        constraint.Constant += 174;
    }
}