2013-06-21 34 views
0

当用另一个太阳视图交换子视图时,是否需要重新应用约束? 是否需要删除适用于已删除视图的约束条件?Autolay视图交换

还是应该自动持续?

回答

1

约束是“视图的一部分”。当你删除一个视图(使用removeFromSuperview)时,他们会保留这个视图,只要视图本身没有被释放。然后,您可以再次安全地添加视图,并且约束将处理定位。

将其与视图的框架进行比较:即使从超级视图中删除视图,框架也会保持不变。当您将视图添加为子视图时,它将处于与之前完全相同的位置。

所以,要回答你的问题:当你用另一个视图“交换”视图时,新视图不会有任何约束。这是行不通的:

[newView addConstraints:[oldView constraints]]; 

这将导致“视图没有层次”的错误,因为约束绑oldView

+0

因此,我们不应该尝试从视图“复制”约束到替换视图...?我仍然试图饶恕一个约束包含的东西。我怀疑这个API最终会变得更好。但是,如果我理解正确,一个约束与一个或两个视图对象的关系紧密结合。 – uchuugaka

+0

没有运气,你说的加回来和框架是一样的。事实上,我得到一个零框架。 – uchuugaka

+0

所以实际上,当我重新添加子视图时,它不会出现。我一定做错了什么。 – uchuugaka