某些东西超越了我的约束

Something is overriding my constraints

我有一个从 nib 加载的视图,添加到超级视图,然后添加一些约束。然而边界结果是错误的,当我用 "Debug View Hierarchy" 查看视图时,它显示一些其他约束正在激活而不是我的。我不知道它们来自哪里以及为什么它们会覆盖我设置的那些。

Xcode 显示:

它们变灰的约束是我自己的,来自 nib 或在运行时添加。前四名是谜。

代码是用 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);

我将其添加到的视图是主要视图 window;我不知道这是否重要。

(我试图从负顶部开始,因为它应该从屏幕外动画,但由于这个问题它不起作用)

额外的约束从何而来,我该如何摆脱它们of/override?

手动向视图添加约束时,您通常希望删除由自动调整大小掩码创建的约束。

为此,只需添加:

notificationView.TranslatesAutoresizingMaskIntoConstraints = false;

之后
window.AddSubview(notificationView);