在 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;
}
}
顶视图:超级视图, 顶视图中的子视图: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;
}
}