东西是压倒我的约束

问题描述:

我有一个视图,我从一个笔尖加载,添加到超级视图,然后添加一些约束。然而,这个界限是错误的,当我用“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); 

是我加入它是主窗口中的视图。我不知道这件事是否重要。

(我想是因为它应该从关屏动画开始与负顶部,但由于这个问题是不工作)

哪里有额外的限制来自何处,以及如何做我摆脱/重写他们?

+0

您可以启用malloc的堆栈日志记录在您的方案选项(诊断选项卡)“所有的分配和*史”。当你在视图调试器(或任何其他元素)中选择一个约束时,检查员将向你显示它的创建回溯。请记住将其关闭,因为它可能会影响目标的性能。 – wolfrevo

向视图手动添加约束时,通常需要移除由自动识别掩码创建的约束。

要做到这一点,只需添加:

notificationView.TranslatesAutoresizingMaskIntoConstraints = false; 

window.AddSubview(notificationView); 
+0

在装载作品后也这样做。我想我以前被这个东西咬过了......事情是文档说你不必为从一个笔尖加载的视图做到这一点。我只记得他们错了。 – Uncommon