我有一个视图,我从一个笔尖加载,添加到一个超级视图,然后添加一些约束。然而,边界变得错误,当我用" Debug View Hierarchy"查看视图时,它显示了一些其他约束是活动的而不是我的。我无法弄清楚他们来自哪里以及为什么他们会覆盖我设置的那些。
Xcode显示了这一点:
他们的灰色约束是我自己的,无论是从笔尖还是在运行时添加。前四名是神秘的。
代码在C#中,但它非常简单:
var notificationView = UINib.FromName("NotificationView", null)
.Instantiate(null, null).OfType<NotificationView>().FirstOrDefault();
var constraints = new[]
{
notificationView.WidthAnchor.ConstraintEqualTo(window.WidthAnchor, 0.5f, 0),
notificationView.CenterXAnchor.ConstraintEqualTo(window.CenterXAnchor),
notificationView.HeightAnchor.ConstraintEqualTo(OverlayHeight),
notificationView.TopAnchor.ConstraintEqualTo(window.TopAnchor, -OverlayHeight),
};
window.AddSubview(notificationView);
NSLayoutConstraint.ActivateConstraints(constraints);
我将其添加到的视图是主窗口;我不知道这是否重要。
(我试图从负面的顶部开始,因为它应该从屏幕外动画,但由于这个问题而无法正常工作)
来自哪些额外限制,以及如何摆脱/覆盖它们?
答案 0 :(得分:1)
手动向视图添加约束时,通常需要删除自动调整蒙版创建的约束。
为此,只需添加:
notificationView.TranslatesAutoresizingMaskIntoConstraints = false;
之后
window.AddSubview(notificationView);