有些事情超越了我的约束

时间:2017-09-13 22:35:02

标签: c# ios nslayoutconstraint

我有一个视图,我从一个笔尖加载,添加到一个超级视图,然后添加一些约束。然而,边界变得错误,当我用" Debug View Hierarchy"查看视图时,它显示了一些其他约束是活动的而不是我的。我无法弄清楚他们来自哪里以及为什么他们会覆盖我设置的那些。

Xcode显示了这一点:

enter image description here

他们的灰色约束是我自己的,无论是从笔尖还是在运行时添加。前四名是神秘的。

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

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

(我试图从负面的顶部开始,因为它应该从屏幕外动画,但由于这个问题而无法正常工作)

来自哪些额外限制,以及如何摆脱/覆盖它们?

1 个答案:

答案 0 :(得分:1)

手动向视图添加约束时,通常需要删除自动调整蒙版创建的约束。

为此,只需添加:

notificationView.TranslatesAutoresizingMaskIntoConstraints = false;

之后

window.AddSubview(notificationView);